From e2414a7a38500230dea37ac72349975dc38b86eb Mon Sep 17 00:00:00 2001 From: Amio Date: Sat, 1 Jun 2019 18:16:40 +0800 Subject: [PATCH] Serve docs with serve-marked --- endpoints/docs.ts | 13 +++---------- libs/serve-help.ts | 36 +++++++++++++++++++++++++++--------- package-lock.json | 6 +++--- package.json | 2 +- tools/gen-examples.ts | 2 -- 5 files changed, 34 insertions(+), 25 deletions(-) diff --git a/endpoints/docs.ts b/endpoints/docs.ts index 7834a45..d1501b2 100644 --- a/endpoints/docs.ts +++ b/endpoints/docs.ts @@ -10,16 +10,9 @@ export default async function (req, res) { if (liveBadgeList.includes(name)) { console.info(100, `${name}: ${req.url}`) - try { - const foundBadge = badges.live.find(b => b.id === name) - if (foundBadge) { - return serveHelp(req, res, name, foundBadge) - } - } catch (error) { - if (error.code !== 'MODULE_NOT_FOUND') { - console.error(error) - throw error - } + const foundBadge = badges.live.find(b => b.id === name) + if (foundBadge) { + return serveHelp(req, res, foundBadge) } } diff --git a/libs/serve-help.ts b/libs/serve-help.ts index 6445d1e..48f9dac 100644 --- a/libs/serve-help.ts +++ b/libs/serve-help.ts @@ -1,20 +1,38 @@ -import { BadgenServeHandlers } from './badgen-serve' +import serveMarked from 'serve-marked' -type BadgenExample = [string, string] type BadgenHelpParams = { id: string, title: string, - examples: BadgenExample[] + examples: { [url: string]: string } routes: string[], help?: any } -export default function serveHelp (req, res, id, params: BadgenHelpParams) { - const { help, examples, routes } = params - const Docs = help ? help : `# ${id}` - const Schemes = `## Schemes\n\n${routes.join('\n')}` - const Examples = `## Examples\n\n${Object.entries(examples).map(ex => ex[0]).join('\n')}` +function genMarkdown ({ id, help, examples, routes }: BadgenHelpParams) { + const Docs = help ? help : `# /${id}` + + const schemeLinks = routes.map(r => `- \`${r}\``) + const Schemes = `## Schemes\n\n${schemeLinks.join(' \n')}` + + const exampleList = Object.entries(examples) + .map(([url, desc]) => `- ![${url}](${url}) [${url}](${url}) ${desc}`) + const Examples = `## Examples\n\n${exampleList.join('\n')}` const md = [Docs, Schemes, Examples].join('\n\n') - res.end(md) + return md } + +export default function serveHelp (req, res, params: BadgenHelpParams) { + const md = genMarkdown(params) + return serveMarked(md, { + title: `${params.title} | Badgen`, + inlineCSS, + })(req, res) +} + +const inlineCSS = ` + .markdown-body { max-width: 800px } + li > img { vertical-align: middle; margin: 0.2em 0; font-size: 12px } + li > img + a { font-family: monospace; font-size: 0.9em } + li > img + a + i { color: #AAA } +` diff --git a/package-lock.json b/package-lock.json index 58340ec..838e0c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11605,9 +11605,9 @@ } }, "serve-marked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/serve-marked/-/serve-marked-1.1.0.tgz", - "integrity": "sha512-37aaz3vr0GdcRMVIDO4V7VpLjpTpKKnZbIfT6SL3zRETx9pzJa+ER5l8lXagQ0MzPdmrLrxn3MX0m8YwXMQfug==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/serve-marked/-/serve-marked-2.0.0.tgz", + "integrity": "sha512-iTs/aYowosAr4JvNqB3NhhBFIFkRt1JHFWMDxr+WNrnBPFkaYCVCdHyTSTrntQdm1I3+2XPH0ADr+Ou/0oP1WQ==", "requires": { "marked": "^0.6.2" } diff --git a/package.json b/package.json index fc9616e..9431718 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "react-debounce-render": "^5.0.0", "semver": "^6.1.0", "serve-handler": "^6.0.1", - "serve-marked": "^1.1.0" + "serve-marked": "^2.0.0" }, "devDependencies": { "@mdx-js/mdx": "^1.0.20", diff --git a/tools/gen-examples.ts b/tools/gen-examples.ts index b5a0ae3..7371579 100644 --- a/tools/gen-examples.ts +++ b/tools/gen-examples.ts @@ -6,8 +6,6 @@ const rel = (...args) => path.resolve(__dirname, ...args) async function main () { const badgeMeta = await loadBadgeMeta() - console.log(badgeMeta) - await fse.outputJson(rel('../static/.gen/badges.json'), badgeMeta) }