UNPKG

@jwpkg/gitversion

Version:

Gitversion is a complete customizable git-based release management system

79 lines 6.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConventionalCommitFooterType = void 0; exports.parseConventionalCommits = parseConventionalCommits; exports.parseConventionalCommit = parseConventionalCommit; exports.isFooterStart = isFooterStart; var ConventionalCommitFooterType; (function (ConventionalCommitFooterType) { ConventionalCommitFooterType[ConventionalCommitFooterType["note"] = 0] = "note"; ConventionalCommitFooterType[ConventionalCommitFooterType["ref"] = 1] = "ref"; })(ConventionalCommitFooterType || (exports.ConventionalCommitFooterType = ConventionalCommitFooterType = {})); function parseConventionalCommits(commits, platform) { const sanitizedCommits = commits.map(platform.stripMergeMessage); return sanitizedCommits.map(parseConventionalCommit).filter((c) => !!c); } function parseConventionalCommit(commit) { const headerRegex = /^([a-zA-Z]+)(\([\w\-\\/.]+\))?(!)?:\s(.+)([\s\S]*)/i; const lines = commit.message.split('\n'); const header = lines.splice(0, 1).join('\n').trim(); const result = headerRegex.exec(header); if (!result) { return undefined; } const currentCommit = { type: result[1].toLowerCase(), scope: result[2]?.replace(/[()]/g, ''), breaking: result[3] === '!', message: result[4], body: '', hash: commit.hash, shortHash: commit.hash.substring(0, 7), footers: [], }; const footers = []; let isBody = true; let currentElement = ''; while (lines.length > 0) { if (isFooterStart(lines[0])) { if (isBody) { currentCommit.body = currentElement.trim(); } else { footers.push(currentElement.trim()); } currentElement = ''; isBody = false; } currentElement += `\n${lines.splice(0, 1)}`; } if (isBody) { currentCommit.body = currentElement.trim(); } else { footers.push(currentElement.trim()); } for (const footer of footers) { if (footer.startsWith('BREAKING CHANGE: ')) { currentCommit.breaking = true; currentCommit.breakingReason = footer.replace(/^BREAKING CHANGE: /, ''); } else { const regex = /(^[\w-]+)(:\s|\s#)/i; const footerStart = regex.exec(footer); if (footerStart) { currentCommit.footers.push({ type: footerStart[2].startsWith(':') ? ConventionalCommitFooterType.note : ConventionalCommitFooterType.ref, name: footerStart[1], value: footer.replace(footerStart[0], ''), }); } } } return currentCommit; } function isFooterStart(line) { const footerRegex = /^[\w-]+(:\s|\s#)\w+|^BREAKING CHANGE:\s/i; return footerRegex.test(line); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVudGlvbmFsLWNvbW1taXQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29yZS9jb252ZW50aW9uYWwtY29tbW1pdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEyQkEsNERBR0M7QUFFRCwwREErREM7QUFFRCxzQ0FHQztBQWpHRCxJQUFZLDRCQUdYO0FBSEQsV0FBWSw0QkFBNEI7SUFDdEMsK0VBQUksQ0FBQTtJQUNKLDZFQUFHLENBQUE7QUFDTCxDQUFDLEVBSFcsNEJBQTRCLDRDQUE1Qiw0QkFBNEIsUUFHdkM7QUFxQkQsU0FBZ0Isd0JBQXdCLENBQUMsT0FBb0IsRUFBRSxRQUFzQjtJQUNuRixNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDakUsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQTJCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkcsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLE1BQWlCO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLHFEQUFxRCxDQUFDO0lBQzFFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXpDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwRCxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FB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