UNPKG

conventional-changelog-writer

Version:
133 lines 9.15 kB
import semver from 'semver'; import { filterRevertedCommitsSync } from 'conventional-commits-filter'; import { stringify } from './utils.js'; export function getCommitGroups(commits, options) { const { groupBy, commitGroupsSort, commitsSort } = options; const commitGroups = []; const commitGroupsObj = commits.reduce((groups, commit) => { const key = commit[groupBy] || ''; if (groups[key]) { groups[key].push(commit); } else { groups[key] = [commit]; } return groups; }, {}); Object.entries(commitGroupsObj).forEach(([title, commits]) => { if (commitsSort) { commits.sort(commitsSort); } commitGroups.push({ title, commits }); }); if (commitGroupsSort) { commitGroups.sort(commitGroupsSort); } return commitGroups; } export function getNoteGroups(notes, options) { const { noteGroupsSort, notesSort } = options; const retGroups = []; notes.forEach((note) => { const { title } = note; let titleExists = false; retGroups.forEach((group) => { if (group.title === title) { titleExists = true; group.notes.push(note); } }); if (!titleExists) { retGroups.push({ title, notes: [note] }); } }); if (noteGroupsSort) { retGroups.sort(noteGroupsSort); } if (notesSort) { retGroups.forEach((group) => { group.notes.sort(notesSort); }); } return retGroups; } export function getExtraContext(commits, notes, options) { return { // group `commits` by `options.groupBy` commitGroups: getCommitGroups(commits, options), // group `notes` for footer noteGroups: getNoteGroups(notes, options) }; } /** * Get final context with default values. * @param context * @param options * @returns Final context with default values. */ export function getFinalContext(context, options) { const finalContext = { commit: 'commits', issue: 'issues', date: options.formatDate(new Date()), headerPartial: options.headerPartial, preamblePartial: options.preamblePartial, commitPartial: options.commitPartial, footerPartial: options.footerPartial, ...context }; if (typeof finalContext.linkReferences !== 'boolean' && (finalContext.repository || finalContext.repoUrl) && finalContext.commit && finalContext.issue) { finalContext.linkReferences = true; } return finalContext; } /** * Get context prepared for template. * @param keyCommit * @param commits * @param filteredCommits * @param notes * @param context * @param options * @returns TemplateContext prepared for template. */ export async function getTemplateContext(keyCommit, commits, context, options) { const notes = []; const filteredCommits = (options.ignoreReverted ? Array.from(filterRevertedCommitsSync(commits)) : commits).map(commit => ({ ...commit, notes: commit.notes.map((note) => { const commitNote = { ...note, commit }; notes.push(commitNote); return commitNote; }) })); let templateContext = { ...context, ...keyCommit, ...getExtraContext(filteredCommits, notes, options) }; if (keyCommit?.committerDate) { templateContext.date = keyCommit.committerDate; } if (templateContext.version && semver.valid(templateContext.version)) { templateContext.isPatch ||= semver.patch(templateContext.version) !== 0; } templateContext = await options.finalizeContext(templateContext, options, filteredCommits, keyCommit, commits); options.debug(`Your final context is:\n${stringify(templateContext)}`); return templateContext; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQTtBQUMzQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXRDLE1BQU0sVUFBVSxlQUFlLENBQzdCLE9BQWlCLEVBQ2pCLE9BQW1GO0lBRW5GLE1BQU0sRUFDSixPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLFdBQVcsRUFDWixHQUFHLE9BQU8sQ0FBQTtJQUNYLE1BQU0sWUFBWSxHQUEwQixFQUFFLENBQUE7SUFDOUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBMkIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDbEYsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBVyxJQUFJLEVBQUUsQ0FBQTtRQUUzQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFTixNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUU7UUFDM0QsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLENBQUM7UUFFRCxZQUFZLENBQUMs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