import { LintResult } from '../linter.js'; import { Root } from 'mdast'; import { visit } from 'unist-util-visit'; import yaml from 'js-yaml'; export function checkFrontmatter(tree: Root): LintResult[] { const results: LintResult[] = []; let foundFrontmatter = false; visit(tree, 'yaml', (node: any) => { foundFrontmatter = true; try { const frontmatter = yaml.load(node.value) as any; if (!frontmatter || typeof frontmatter !== 'object') { results.push({ ruleId: '1', message: 'Frontmatter is invalid YAML' }); return; } if (!frontmatter.hasOwnProperty('title')) { results.push({ ruleId: '1', message: 'Frontmatter missing "title" field' }); } if (!frontmatter.hasOwnProperty('draft')) { results.push({ ruleId: '1', message: 'Frontmatter missing "draft" field' }); } } catch (e) { results.push({ ruleId: '1', message: 'Frontmatter contains invalid YAML syntax' }); } }); if (!foundFrontmatter) { results.push({ ruleId: '1', message: 'Frontmatter is missing' }); } return results; }