mirror of
https://github.com/sunknudsen/privacy-guides.git
synced 2025-02-22 16:53:56 +00:00
73 lines
1.6 KiB
JavaScript
73 lines
1.6 KiB
JavaScript
"use strict"
|
|
|
|
import "dotenv/config"
|
|
import express from "express"
|
|
import got from "got"
|
|
import fsExtra from "fs-extra"
|
|
import prettier from "prettier"
|
|
import handlebars from "handlebars"
|
|
|
|
const { pathExists, readFile } = fsExtra
|
|
|
|
const gfm = handlebars.compile(await readFile("./gfm.hbs", "utf8"))
|
|
|
|
const app = express()
|
|
|
|
app.get("/github-markdown.css", async (req, res, next) => {
|
|
try {
|
|
const path = "./node_modules/github-markdown-css/github-markdown.css"
|
|
const exists = await pathExists(path)
|
|
if (exists === false) {
|
|
return next()
|
|
}
|
|
const css = await readFile(path, "utf8")
|
|
res.setHeader("Content-Type", "text/css")
|
|
return res.send(css)
|
|
} catch (error) {
|
|
console.log(error)
|
|
return res.sendStatus(500)
|
|
}
|
|
})
|
|
|
|
app.get("*.md", async (req, res, next) => {
|
|
try {
|
|
const path = `.${req.url}`
|
|
const exists = await pathExists(path)
|
|
if (exists === false) {
|
|
return next()
|
|
}
|
|
const markdown = await readFile(path, "utf8")
|
|
const response = await got.post("https://api.github.com/markdown", {
|
|
json: {
|
|
mode: "gfm",
|
|
text: markdown,
|
|
},
|
|
})
|
|
res.setHeader("Content-Type", "text/html")
|
|
return res.send(
|
|
prettier.format(
|
|
gfm({
|
|
markdown: response.body,
|
|
}),
|
|
{
|
|
parser: "html",
|
|
}
|
|
)
|
|
)
|
|
} catch (error) {
|
|
console.log(error)
|
|
return res.sendStatus(500)
|
|
}
|
|
})
|
|
|
|
app.use(
|
|
express.static(".", {
|
|
dotfiles: "ignore",
|
|
index: false,
|
|
})
|
|
)
|
|
|
|
const server = app.listen(process.env.PORT ?? 8080, () => {
|
|
console.info(`Server listening on port ${server.address().port}`)
|
|
})
|