UNPKG

commitiquette

Version:

Plugin for commitizen to use commitLint config

125 lines (124 loc) 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.footerMaker = exports.issuesTransformerFactory = exports.breakingTransformFactory = exports.issuesMessageFactory = exports.breakingChangeMessageFactory = exports.issueFilterFactory = exports.breakingChangeFilterFactory = exports.validatorFactory = void 0; var tslib_1 = require("tslib"); var utils_1 = require("../utils"); var validators_1 = require("../validators"); var filters_1 = require("../filters"); var BREAKING_CHANGE = 'BREAKING CHANGE: '; function validatorFactory(rules) { return function (value, answers) { var _a; var breaking = (_a = answers.breaking) !== null && _a !== void 0 ? _a : ''; return (0, validators_1.validate)([ { value: value + breaking, rule: rules['footer-max-length'], validator: validators_1.maxLengthValidator, message: function (length) { return "Footer maximum length of " + length + " has been exceeded"; }, }, { value: value + breaking, rule: rules['footer-min-length'], validator: validators_1.minLengthValidator, message: function (length) { return "Footer minimum length of " + length + " has not been met"; }, }, ]); }; } exports.validatorFactory = validatorFactory; function breakingChangeFilterFactory(rules, prefix) { return function (value) { return (0, utils_1.pipeWith)(value, function (v) { return prefix + v; }, function (v) { return (0, filters_1.maxLineLengthFilter)(v, rules['footer-max-line-length']); }, function (v) { return (0, filters_1.leadingBlankFilter)(v, rules['footer-leading-blank']); }); }; } exports.breakingChangeFilterFactory = breakingChangeFilterFactory; function issueFilterFactory(rules) { return function (value, answers) { return (0, utils_1.pipeWith)(value, function (v) { return (0, filters_1.maxLineLengthFilter)(v, rules['footer-max-line-length']); }, function (v) { return (0, filters_1.leadingBlankFilter)(v, rules['footer-leading-blank']); }, function (v) { return (answers.isBreaking ? '\n' : '') + v; }); }; } exports.issueFilterFactory = issueFilterFactory; function breakingChangeMessageFactory(rules) { return function () { var maxLength = (0, utils_1.valueFromRule)(rules['footer-max-length']); var MESSAGE = 'Describe the breaking changes'; if (!maxLength) { return MESSAGE + ":\n"; } return MESSAGE + " (max " + maxLength + " chars):\n"; }; } exports.breakingChangeMessageFactory = breakingChangeMessageFactory; function issuesMessageFactory(rules) { return function () { var maxLength = (0, utils_1.valueFromRule)(rules['footer-max-length']); var MESSAGE = 'Add issue references (e.g. "fix #123", "re #123".)'; if (!maxLength) { return MESSAGE + ":\n"; } return MESSAGE + " (max " + maxLength + " chars):\n"; }; } exports.issuesMessageFactory = issuesMessageFactory; function isFixCommit(answers) { var _a; return (_a = (answers === null || answers === void 0 ? void 0 : answers.type) == 'fix') !== null && _a !== void 0 ? _a : false; } function breakingTransformFactory(rules, prefix) { return function (value) { var footerMaxLength = (0, utils_1.valueFromRule)(rules['footer-max-length']); if (footerMaxLength) { return (0, utils_1.maxLengthTransformerFactory)(footerMaxLength - prefix.length)(value); } return value; }; } exports.breakingTransformFactory = breakingTransformFactory; function issuesTransformerFactory(rules) { return function (value) { var footerMaxLength = (0, utils_1.valueFromRule)(rules['footer-max-length']); if (footerMaxLength) { return (0, utils_1.maxLengthTransformerFactory)(footerMaxLength)(value); } return value; }; } exports.issuesTransformerFactory = issuesTransformerFactory; function footerMaker(questions, rules) { var footerQuestions = [ { type: 'confirm', name: 'isBreaking', message: 'Are there any breaking changes?', default: false, }, { type: 'input', name: 'breaking', message: breakingChangeMessageFactory(rules), when: function (answers) { return !!answers.isBreaking; }, validate: validatorFactory(rules), transformer: breakingTransformFactory(rules, BREAKING_CHANGE), filter: breakingChangeFilterFactory(rules, BREAKING_CHANGE), }, { type: 'confirm', name: 'isIssue', message: 'Does this fix Does this change affect any open issues?', when: function (answers) { return !isFixCommit(answers); }, default: false, }, { type: 'input', name: 'issue', message: issuesMessageFactory(rules), when: function (answers) { return isFixCommit(answers) || !!answers.isIssue; }, validate: validatorFactory(rules), transformer: issuesTransformerFactory(rules), filter: issueFilterFactory(rules), }, ]; return (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], questions, true), footerQuestions, true); } exports.footerMaker = footerMaker;