import fs from 'fs' import { join } from 'path' import matter from 'gray-matter' const trainingDir = join(process.cwd(), 'content/training') export const getTrainingSlugs = () => { return fs.readdirSync(trainingDir) } export const getTrainingBySlug = (slug: string, fields: string[] = []) => { const realSlug = slug.replace(/\.md$/, '') const fullPath = join(trainingDir, `${realSlug}.md`) const fileContents = fs.readFileSync(fullPath, 'utf8') const { data, content } = matter(fileContents) type Items = { [key: string]: string } const items: Items = {} // Ensure only the minimal needed data is exposed fields.forEach((field) => { if (field === 'slug') { items[field] = realSlug } if (field === 'content') { items[field] = content } if (typeof data[field] !== 'undefined') { items[field] = data[field] } }) return items } export const getAllTraining = (fields: string[] = []) => { const slugs = getTrainingSlugs() const trainingList = slugs .map((slug) => getTrainingBySlug(slug, fields)) .sort((tr1, tr2) => { const tr1w = parseInt(tr1.weight) const tr2w = parseInt(tr2.weight) return tr1w > tr2w ? -1 : 1 }) return trainingList }