conventional-changelog-writer
Version:
Write logs based on conventional commits and templates.
79 lines • 5.3 kB
JavaScript
import { headerPartial, preamblePartial, commitPartial, footerPartial, template } from '@conventional-changelog/template';
import { valid as semverValid } from 'semver';
import { formatDate, createComparator } from './utils.js';
const HASH_SHORT_LENGTH = 7;
const HEADER_MAX_LENGTH = 100;
/**
* Default commit transform function.
* @param commit
* @param _context
* @param options
* @param options.formatDate - Date formatter function.
* @returns Patch object for commit.
*/
export function defaultCommitTransform(commit, _context, options) {
const { hash, header, committerDate } = commit;
return {
hash: typeof hash === 'string'
? hash.substring(0, HASH_SHORT_LENGTH)
: hash,
header: typeof header === 'string'
? header.substring(0, HEADER_MAX_LENGTH)
: header,
committerDate: committerDate
? options.formatDate(committerDate)
: committerDate
};
}
/**
* Get final options object.
* @param options
* @returns Final options object.
*/
export function getFinalOptions(options) {
const prefinalOptions = {
groupBy: 'type',
commitsSort: 'header',
noteGroupsSort: 'title',
notesSort: 'text',
transform: defaultCommitTransform,
generateOn: (commit) => Boolean(semverValid(commit.version)),
finalizeContext: (context) => context,
debug: () => { },
formatDate,
template,
headerPartial,
preamblePartial,
commitPartial,
footerPartial,
reverse: false,
ignoreReverted: true,
doFlush: true,
...options
};
const finalOptions = {
...prefinalOptions,
commitGroupsSort: createComparator(prefinalOptions.commitGroupsSort),
commitsSort: createComparator(prefinalOptions.commitsSort),
noteGroupsSort: createComparator(prefinalOptions.noteGroupsSort),
notesSort: createComparator(prefinalOptions.notesSort)
};
return finalOptions;
}
/**
* Get final context object.
* @param context
* @param options
* @returns Final context object.
*/
export function getGenerateOnFunction(context, options) {
const { generateOn } = options;
if (typeof generateOn === 'string') {
return (commit) => typeof commit[generateOn] !== 'undefined';
}
else if (typeof generateOn !== 'function') {
return () => false;
}
return (keyCommit, commitsGroup) => generateOn(keyCommit, commitsGroup, context, options);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDYixhQUFhLEVBQ2IsUUFBUSxFQUNULE1BQU0sa0NBQWtDLENBQUE7QUFDekMsT0FBTyxFQUFFLEtBQUssSUFBSSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFLN0MsT0FBTyxFQUNMLFVBQVUsRUFDVixnQkFBZ0IsRUFDakIsTUFBTSxZQUFZLENBQUE7QUFFbkIsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUE7QUFDM0IsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUE7QUFFN0I7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsTUFBYyxFQUNkLFFBQWlCLEVBQ2pCLE9BQWlEO0lBRWpELE1BQU0sRUFDSixJQUFJLEVBQ0osTUFBTSxFQUNOLGFBQWEsRUFDZCxHQUFHLE1BQU0sQ0FBQTtJQUVWLE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUk7UUFDUixNQUFNLEVBQUUsT0FBTyxNQUFNLEtBQUssUUFBUTtZQUNoQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUM7WUFDeEMsQ0FBQyxDQUFDLE1BQU07UUFDVixhQUFhLEVBQUUsYUFBYTtZQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7WUFDbkMsQ0FBQyxDQUFDLGFBQWE7S0FDQyxDQUFBO0FBQ3RCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsT0FBd0I7SUFFeEIsTUFBTSxlQUFlLEdBQUc7UUFDdEIsT0FBTyxFQUFFLE1BQWU7UUFDeEIsV0FBVyxFQUFFLFFBQWlCO1FBQzlCLGNBQWMsRUFBRSxPQUFnQjtRQUNoQyxTQUFTLEVBQUUsTUFBZTtRQUMxQixTQUFTLEVBQUUsc0JBQXNCO1FBQ2pDLFVBQVUsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsZUFBZSxFQUFFLENBQUMsT0FBcUMsRUFBRSxFQUFFLENBQUMsT0FBTztRQUNuRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQWMsQ0FBQztRQUMzQixVQUFVO1FBQ1YsUUFBUTtRQUNSLGFBQWE7UUFDYixlQUFlO1FBQ2YsYUFBYTtRQUNiLGFBQWE7UUFDYixPQUFPLEVBQUUsS0FBSztRQUNkLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsR0FBRyxPQUFPO0tBQ1gsQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHO1FBQ25CLEdBQUcsZUFBZTtRQUNsQixnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUM7UUFDcEUsV0FBVyxFQUFFLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxXQUF1QixDQUFDO1FBQ3RFLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDO1FBQ2hFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO0tBQy9CLENBQUE7SUFFekIsT0FBTyxZQUFZLENBQUE7QUFDckIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUNuQyxPQUFxQyxFQUNyQyxPQUE2QjtJQUU3QixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFBO0lBRTlCLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssV0FBVyxDQUFBO0lBQ3RFLENBQUM7U0FBTSxJQUFJLE9BQU8sVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFBO0lBQ3BCLENBQUM7SUFFRCxPQUFPLENBQUMsU0FBaUIsRUFBRSxZQUFzQixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDN0csQ0FBQyJ9