{"version":3,"file":"getMarkdownMetadata.mjs","names":[],"sources":["../../../../src/transpiler/markdown/getMarkdownMetadata.ts"],"sourcesContent":["import { parseYaml } from '../../utils/parseYaml';\n\nexport const getMarkdownMetadata = <T extends Record<string, any>>(\n  markdown: string\n): T => {\n  try {\n    const lines = markdown.split(/\\r?\\n/);\n\n    // Check if the very first non-empty line is the metadata start delimiter.\n    const firstNonEmptyLine = lines.find((line) => line.trim() !== '');\n\n    if (!firstNonEmptyLine || firstNonEmptyLine.trim() !== '---') {\n      const result: T = {} as T;\n      return result;\n    }\n\n    // Find the end of the metadata block\n    let metadataEndIndex = -1;\n    for (let i = 1; i < lines.length; i++) {\n      if (lines[i].trim() === '---') {\n        metadataEndIndex = i;\n        break;\n      }\n    }\n\n    if (metadataEndIndex === -1) {\n      // No closing delimiter found\n      const result: T = {} as T;\n      return result;\n    }\n\n    // Extract the metadata content between the delimiters\n    const metadataLines = lines.slice(1, metadataEndIndex);\n    const metadataContent = metadataLines.join('\\n');\n\n    // Use the improved parseYaml function to parse the entire metadata block\n    const metadata = parseYaml<T>(metadataContent);\n\n    return metadata ?? ({} as T);\n  } catch {\n    const result: T = {} as T;\n    return result;\n  }\n};\n"],"mappings":";;;AAEA,MAAa,uBACX,aACM;AACN,KAAI;EACF,MAAM,QAAQ,SAAS,MAAM,QAAQ;EAGrC,MAAM,oBAAoB,MAAM,MAAM,SAAS,KAAK,MAAM,KAAK,GAAG;AAElE,MAAI,CAAC,qBAAqB,kBAAkB,MAAM,KAAK,MAErD,QAAO,EAAM;EAIf,IAAI,mBAAmB;AACvB,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,IAChC,KAAI,MAAM,GAAG,MAAM,KAAK,OAAO;AAC7B,sBAAmB;AACnB;;AAIJ,MAAI,qBAAqB,GAGvB,QAAO,EAAM;AAUf,SAFiB,UAJK,MAAM,MAAM,GAAG,iBACA,CAAC,KAAK,KAGE,CAE9B,IAAK,EAAE;SAChB;AAEN,SAAO,EAAM"}