const fs = require('fs-extra'); const path = require('path'); const fm = require('front-matter'); const globby = require('globby'); const {encodePath, fileToPath} = require('./utils'); function parse(fileString) { if (!fm.test(fileString)) { return {metadata: null, content: fileString}; } const {attributes: metadata, body: content} = fm(fileString); return {metadata, content}; } async function loadDocs(docsDir) { const docsFiles = await globby(['**/*.md'], { cwd: docsDir }); const docsData = await Promise.all( docsFiles.map(async source => { const filepath = path.resolve(docsDir, source); const fileString = await fs.readFile(filepath, 'utf-8'); const {metadata} = parse(fileString); return { path: encodePath(fileToPath(source)), source, ...metadata }; }) ); return docsData; } module.exports = loadDocs;