1
0
Fork 0
freesewing/sites/shared/mdx/load.mjs

41 lines
1.2 KiB
JavaScript
Raw Normal View History

2023-10-07 21:19:38 +02:00
import fs from 'fs'
import path from 'path'
import { compileMdx } from './compile.mjs'
import { jargon } from 'shared/jargon/index.mjs'
/*
* Loads markdown/mdx from disk
*/
export const loadMdxFromDisk = async ({
language, // The language code of the markdown to load (like 'en')
site, // The site folder, one of 'dev' or 'org'
slug, // The slug below that folder, like 'guides/plugins'
}) =>
await fs.promises.readFile(path.resolve(`../../markdown/${site}/${slug}/${language}.md`), 'utf-8')
/*
* Loads markdown/mdx from disk and compiles it for use
* in static props.
*/
export const loadMdxAsStaticProps = async ({
language, // The language code of the markdown to load (like 'en')
site, // The site folder, one of 'dev' or 'org'
slug = false, // The slug below that folder, like 'guides/plugins'
slugs = [], // Or an array of slugs to load multiple files
}) => {
const result = []
if (slug) slugs = [slug]
for (const s of slugs) {
const md = await loadMdxFromDisk({ language, site, slug: s })
const mdx = await compileMdx({
md,
site,
slug: s,
jargon: jargon[language],
})
result.push(mdx)
}
return slugs.length === 1 ? result[0] : result
}