UNPKG

conventional-changelog-lint

Version:

Lint commit messages against a conventional-changelog preset and ruleset

150 lines (111 loc) 4.61 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _lodash = require('lodash'); var _rc = require('rc'); var _rc2 = _interopRequireDefault(_rc); var _resolveExtends = require('./resolve-extends'); var _resolveExtends2 = _interopRequireDefault(_resolveExtends); var _executeRule = require('./execute-rule'); var _executeRule2 = _interopRequireDefault(_executeRule); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaults = { extends: ['angular'] }; var defaultName = 'conventional-changelog-lint'; var defaultSettings = { prefix: 'conventional-changelog-lint-config' }; exports.default = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultName; var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultSettings; var seed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var userConfig, applicableDefaults, config, opts, extended, preset, executed; return _regenerator2.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: // Obtain config from .rc files userConfig = (0, _lodash.omit)((0, _rc2.default)(name, settings.defaults), '_'); // Use the default extends config if there is no userConfig file found // See https://git.io/vwT1C for reference applicableDefaults = userConfig.config ? {} : defaults; // Merge passed config with file based options config = (0, _lodash.merge)(userConfig, seed); opts = (0, _lodash.merge)({}, applicableDefaults, (0, _lodash.pick)(config, 'extends')); // Resolve extends key extended = (0, _resolveExtends2.default)(opts, settings.prefix); preset = (0, _lodash.mergeWith)({}, extended, config, function (a, b) { if (Array.isArray(b)) { return b; } }); // Execute rule config functions if needed _context2.next = 8; return Promise.all(['rules', 'wildcards'].map(function (key) { return [key, preset[key]]; }).map(function () { var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(item) { var _item, key, value, executedValue; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _item = (0, _slicedToArray3.default)(item, 2), key = _item[0], value = _item[1]; _context.next = 3; return Promise.all(Object.entries(value || {}).map(function (entry) { return (0, _executeRule2.default)(entry); })); case 3: executedValue = _context.sent; return _context.abrupt('return', [key, executedValue.reduce(function (registry, item) { var _item2 = (0, _slicedToArray3.default)(item, 2), key = _item2[0], value = _item2[1]; return (0, _extends3.default)({}, registry, { [key]: value }); }, {})]); case 5: case 'end': return _context.stop(); } } }, _callee, undefined); })); return function (_x4) { return _ref2.apply(this, arguments); }; }())); case 8: executed = _context2.sent; return _context2.abrupt('return', executed.reduce(function (registry, item) { var _item3 = (0, _slicedToArray3.default)(item, 2), key = _item3[0], value = _item3[1]; return (0, _extends3.default)({}, registry, { [key]: value }); }, preset)); case 10: case 'end': return _context2.stop(); } } }, _callee2, undefined); })); return function () { return _ref.apply(this, arguments); }; }(); module.exports = exports['default'];