diff options
Diffstat (limited to 'packages/markdown/remark/src/frontmatter-injection.ts')
-rw-r--r-- | packages/markdown/remark/src/frontmatter-injection.ts | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/packages/markdown/remark/src/frontmatter-injection.ts b/packages/markdown/remark/src/frontmatter-injection.ts deleted file mode 100644 index 91b98ebcb..000000000 --- a/packages/markdown/remark/src/frontmatter-injection.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { VFileData as Data, VFile } from 'vfile'; -import type { MarkdownAstroData } from './types.js'; - -function isValidAstroData(obj: unknown): obj is MarkdownAstroData { - if (typeof obj === 'object' && obj !== null && obj.hasOwnProperty('frontmatter')) { - const { frontmatter } = obj as any; - try { - // ensure frontmatter is JSON-serializable - JSON.stringify(frontmatter); - } catch { - return false; - } - return typeof frontmatter === 'object' && frontmatter !== null; - } - return false; -} - -export class InvalidAstroDataError extends TypeError {} - -export function safelyGetAstroData(vfileData: Data): MarkdownAstroData | InvalidAstroDataError { - const { astro } = vfileData; - - if (!astro || !isValidAstroData(astro)) { - return new InvalidAstroDataError(); - } - - return astro; -} - -export function setVfileFrontmatter(vfile: VFile, frontmatter: Record<string, any>) { - vfile.data ??= {}; - vfile.data.astro ??= {}; - (vfile.data.astro as any).frontmatter = frontmatter; -} |