astro-ghostcms/.pnpm-store/v3/files/6e/0ab20e4eb72499bdbe66a747fa7...

41 lines
914 B
Plaintext

import yaml from 'js-yaml';
const mdRegex = /\s*---([^]*?)\n\s*---(\s*(?:\n|$)[^]*)/;
function parseChangesetFile(contents) {
const execResult = mdRegex.exec(contents);
if (!execResult) {
throw new Error(`could not parse changeset - invalid frontmatter: ${contents}`);
}
let [, roughReleases, roughSummary] = execResult;
let summary = roughSummary.trim();
let releases;
try {
const yamlStuff = yaml.safeLoad(roughReleases);
if (yamlStuff) {
releases = Object.entries(yamlStuff).map(([name, type]) => ({
name,
type
}));
} else {
releases = [];
}
} catch (e) {
throw new Error(`could not parse changeset - invalid frontmatter: ${contents}`);
}
if (!releases) {
throw new Error(`could not parse changeset - unknown error: ${contents}`);
}
return {
releases,
summary
};
}
export { parseChangesetFile as default };