{"version":3,"sources":["/home/renatorib/p/publissue/packages/api/dist/__chunks/BIJL4JKL.cjs","../../src/lib/frontmatter.ts"],"names":["parse","content","match","data","parseError","parseYaml","e","YAMLError","YAMLParseError","stringify","raw","_a","parsed","__spreadValues","dataString","stringifyYaml"],"mappings":"AAAA,sHAAkC,4BCAwD,IAWpFA,CAAAA,CAASC,CAAAA,EAA4B,CAEzC,IAAMC,CAAAA,CAAQ,kEAAA,CAAmE,IAAA,CAAKD,CAAO,CAAA,CAC7F,EAAA,CAAIC,CAAAA,CAAO,CACT,IAAIC,CAAAA,CAAa,CAAC,CAAA,CACdC,CAAAA,CAAa,IAAA,CACjB,GAAI,CACFD,CAAAA,CAAOE,yBAAAA,CAAUH,CAAM,CAAC,CAAA,CAAG,CACzB,UAAA,CAAY,CAAA,CACd,CAAC,CAAA,CAAA,CAGG,OAAOC,CAAAA,EAAS,QAAA,EAAY,KAAA,CAAM,OAAA,CAAQA,CAAI,CAAA,CAAA,EAAA,CAChDA,CAAAA,CAAO,CAAE,KAAA,CAAOA,CAAK,CAAA,CAEzB,CAAA,KAAA,CAASG,CAAAA,CAAY,CACnB,EAAA,CAAI,CAAA,CAAEA,EAAAA,WAAaC,eAAAA,CAAAA,EAAc,CAAA,CAAED,EAAAA,WAAaE,oBAAAA,CAAAA,CAC9C,MAAMF,CAAAA,CAERF,CAAAA,CAAaE,CACf,CACA,MAAO,CACL,IAAA,CAAAH,CAAAA,CACA,OAAA,CAASF,CAAAA,CAAQ,KAAA,CAAMC,CAAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA,CACtC,UAAA,CAAAE,CACF,CACF,CACA,MAAO,CACL,IAAA,CAAM,CAAC,CAAA,CACP,OAAA,CAAAH,CAAAA,CACA,UAAA,CAAY,IACd,CACF,CAAA,CAEMQ,CAAAA,CAAaC,CAAAA,EAAyC,CA7C5D,IAAAC,CAAAA,CA+CE,IAAMC,CAAAA,CAASZ,CAAAA,CAAAA,CAAMW,CAAAA,CAAAD,CAAAA,CAAI,OAAA,CAAA,EAAJ,IAAA,CAAAC,CAAAA,CAAe,EAAE,CAAA,CAClCV,CAAAA,CAAUW,CAAAA,CAAO,OAAA,CAErB,EAAA,CAAIF,CAAAA,CAAI,IAAA,EAAQE,CAAAA,CAAO,IAAA,CAAM,CAC3B,IAAMT,CAAAA,CAAOU,4BAAAA,4BAAAA,CAAA,CAAA,CAAKD,CAAAA,CAAO,IAAA,CAAA,CAASF,CAAAA,CAAI,IAAA,CAAA,CAChCI,CAAAA,CAAaC,6BAAAA,CAAkB,CAAA,CACrCd,CAAAA,CAAU,CAAA,EAAA;AAAU;AAMsB","file":"/home/renatorib/p/publissue/packages/api/dist/__chunks/BIJL4JKL.cjs","sourcesContent":[null,"import { parse as parseYaml, stringify as stringifyYaml, YAMLError, YAMLParseError } from \"yaml\";\n\ntype YamlValue = string | number | boolean | null | YamlValue[] | { [x: string]: YamlValue };\ntype Data = { [x: string]: YamlValue };\n\ntype Parsed = {\n  data: Data;\n  content: string;\n  parseError: null | YAMLParseError | YAMLError;\n};\n\nconst parse = (content: string): Parsed => {\n  // Regex adapted from https://github.com/vfile/vfile-matter and idealized by @iamtrysound\n  const match = /^\\n+?---(?:\\r?\\n|\\r)(?:([\\s\\S]*?)(?:\\r?\\n|\\r))?---(?:\\r?\\n|\\r|$)/.exec(content);\n  if (match) {\n    let data: Data = {};\n    let parseError = null;\n    try {\n      data = parseYaml(match[1], {\n        uniqueKeys: false,\n      });\n      // yaml accept any scalar as root, but in frontmatter we want to treat `data` always as an object.\n      // when the root is an scalar, pack it inside a `value` property\n      if (typeof data !== \"object\" || Array.isArray(data)) {\n        data = { value: data };\n      }\n    } catch (e: unknown) {\n      if (!(e instanceof YAMLError) && !(e instanceof YAMLParseError)) {\n        throw e;\n      }\n      parseError = e;\n    }\n    return {\n      data,\n      content: content.slice(match[0].length),\n      parseError,\n    };\n  }\n  return {\n    data: {},\n    content,\n    parseError: null,\n  };\n};\n\nconst stringify = (raw: { data: Data; content: string }) => {\n  // extract content-only\n  const parsed = parse(raw.content ?? \"\");\n  let content = parsed.content;\n\n  if (raw.data || parsed.data) {\n    const data = { ...parsed.data, ...raw.data };\n    const dataString = stringifyYaml(data);\n    content = `${content}\\n\\n${data}`;\n  }\n\n  return content;\n};\n\nexport const frontmatter = { parse, stringify };\n"]}