standard-commit
Version:
conventional commit
66 lines (65 loc) • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatMessage = exports.formatBody = exports.formatIssues = exports.formatBreaking = exports.formatHeader = void 0;
const linewrap_1 = __importDefault(require("linewrap"));
const os_1 = require("os");
const wrapLines = (0, linewrap_1.default)(72);
function appendBlock(message, block) {
if (block) {
return [message, '', block].join(os_1.EOL);
}
else {
return message;
}
}
function formatLines(lines) {
return wrapLines(lines.map((line) => line.trim()).join(os_1.EOL));
}
function formatHeader(type, scope, subject) {
type = type || '';
subject = subject || '';
scope = scope ? `(${scope})` : '';
return `${type}${scope}: ${subject}`;
}
exports.formatHeader = formatHeader;
function formatBreaking(change) {
return 'BREAKING CHANGE: ' + change.trim();
}
exports.formatBreaking = formatBreaking;
function formatIssues(issues) {
return issues
.map((issue) => {
if (/^(\w+):\s(.*)/.test(issue)) {
const line = issue.trim();
return line[0].toUpperCase() + line.slice(1);
}
const id = issue.trim();
return `Refs: ${Number.isInteger(Number(id)) ? `#${id}` : id}`;
})
.join('\n');
}
exports.formatIssues = formatIssues;
function formatBody(body) {
return body ? formatLines(body) : '';
}
exports.formatBody = formatBody;
function formatMessage(commit) {
let message = formatHeader(commit.type, commit.scope, commit.subject);
if (commit.body) {
const block = formatBody(commit.body);
message = appendBlock(message, block);
}
if (commit.breaking) {
const block = formatBreaking(commit.breaking);
message = appendBlock(message, block);
}
if (commit.issues && commit.issues.length) {
const block = formatIssues(commit.issues);
message = appendBlock(message, block);
}
return message + os_1.EOL;
}
exports.formatMessage = formatMessage;