From d582bce5c0c46b0e7b850515285fc0f6009d138d Mon Sep 17 00:00:00 2001 From: Enstrayed <48845980+Enstrayed@users.noreply.github.com> Date: Tue, 22 Oct 2024 16:34:27 -0700 Subject: [PATCH] add markdown post support --- package-lock.json | 13 +++++++++++++ package.json | 1 + routes/frontpage.js | 17 ++++++++++++++--- static/markdownposttemplate.html | 21 +++++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 static/markdownposttemplate.html diff --git a/package-lock.json b/package-lock.json index 8b53f6f..0088f1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "UNLICENSED", "dependencies": { "express": "^4.18.2", + "marked": "^14.1.3", "nodemailer": "^6.9.15" }, "devDependencies": { @@ -464,6 +465,18 @@ "node": ">= 0.10" } }, + "node_modules/marked": { + "version": "14.1.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.3.tgz", + "integrity": "sha512-ZibJqTULGlt9g5k4VMARAktMAjXoVnnr+Y3aCqW1oDftcV4BA3UmrBifzXoZyenHRk75csiPu9iwsTj4VNBT0g==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", diff --git a/package.json b/package.json index 81da7d8..8f9de25 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { "express": "^4.18.2", + "marked": "^14.1.3", "nodemailer": "^6.9.15" }, "name": "enstrayedapi", diff --git a/routes/frontpage.js b/routes/frontpage.js index 9a19d34..30c5524 100644 --- a/routes/frontpage.js +++ b/routes/frontpage.js @@ -1,4 +1,5 @@ import { app, globalConfig, fs, globalVersion } from "../index.js" // Get globals from index +import { marked } from "marked" var timeSinceLastQuery = Date.now()-10000 var cachedResult = "" @@ -8,7 +9,17 @@ app.get("/static/*", (rreq,rres) => { }) app.get("/posts/*", (rreq,rres) => { - rres.sendFile(globalConfig.frontpage.directory+"posts/"+rreq.url.replace("/posts/","")) + + if (rreq.url.endsWith(".md")) { + let file = fs.readFileSync("./static/markdownposttemplate.html","utf-8") + file = file.replace("",`https://enstrayed.com${rreq.url}`) + file = file.replaceAll("",rreq.url.replace("/posts/","").slice(9).replace(/-/g," ").replace(".md","")) + file = file.replace("",marked.parse(fs.readFileSync(globalConfig.frontpage.directory+"posts/"+rreq.url.replace("/posts/",""),"utf-8"))) + rres.send(file) + } else { + rres.sendFile(globalConfig.frontpage.directory+"posts/"+rreq.url.replace("/posts/","")) + } + }) app.get("/", (rreq, rres) => { @@ -26,14 +37,14 @@ function parseFiles() { let result = "" for (let x in files) { - if (files[x].endsWith(".html") === false) { break } // If file/dir is not .html then ignore + if (files[x].endsWith(".html") === false && files[x].endsWith(".md") === false ) { break } // If file/dir is not .html or .md then ignore let date = files[x].split("-")[0] if (date < 10000000 || date > 99999999) { break } // If date does not fit ISO8601 format then ignore date = date.replace(/.{2}/g,"$&-").replace("-","").slice(0,-1) // Insert a dash every 2 characters, remove the first dash, remove the last character - let name = files[x].slice(9).replace(/-/g," ").replace(".html","") // Strip Date, replace seperator with space & remove file extension + let name = files[x].slice(9).replace(/-/g," ").replace(".html","").replace(".md","") // Strip Date, replace seperator with space & remove file extension result = `${date} ${name}`+result } diff --git a/static/markdownposttemplate.html b/static/markdownposttemplate.html new file mode 100644 index 0000000..cbcf96e --- /dev/null +++ b/static/markdownposttemplate.html @@ -0,0 +1,21 @@ + + + + + + + + + + <!--SSR_REPLACE_TITLE--> + + + + + + + + Return to enstrayed.com + + + \ No newline at end of file