UNPKG

4.82 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.format = exports.getPreset = exports.getMessages = exports.getConfiguration = undefined;
7
8var _regenerator = require('babel-runtime/regenerator');
9
10var _regenerator2 = _interopRequireDefault(_regenerator);
11
12var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
13
14var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
15
16var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
17
18var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
19
20var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
21
22var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
23
24var _conventionalCommitsParser = require('conventional-commits-parser');
25
26var _lodash = require('lodash');
27
28var _getConfiguration2 = require('./library/get-configuration');
29
30var _getConfiguration3 = _interopRequireDefault(_getConfiguration2);
31
32var _getMessages2 = require('./library/get-messages');
33
34var _getMessages3 = _interopRequireDefault(_getMessages2);
35
36var _getPreset2 = require('./library/get-preset');
37
38var _getPreset3 = _interopRequireDefault(_getPreset2);
39
40var _format2 = require('./library/format');
41
42var _format3 = _interopRequireDefault(_format2);
43
44function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
46exports.getConfiguration = _getConfiguration3.default;
47exports.getMessages = _getMessages3.default;
48exports.getPreset = _getPreset3.default;
49exports.format = _format3.default;
50
51exports.default = function () {
52 var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(message) {
53 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
54
55 var parserOptions, _options$configuratio, rules, wildcards, parsed, bails, results, errors, warnings, valid;
56
57 return _regenerator2.default.wrap(function _callee$(_context) {
58 while (1) {
59 switch (_context.prev = _context.next) {
60 case 0:
61 parserOptions = options.preset.parserOpts, _options$configuratio = options.configuration, rules = _options$configuratio.rules, wildcards = _options$configuratio.wildcards;
62
63 // parse the commit message
64
65 parsed = (0, _lodash.merge)({ raw: message }, (0, _conventionalCommitsParser.sync)(message, parserOptions));
66
67 // wildcard matches skip the linting
68
69 bails = Object.entries(wildcards).filter(function (entry) {
70 var _entry = (0, _slicedToArray3.default)(entry, 2),
71 pattern = _entry[1];
72
73 return Array.isArray(pattern);
74 }).filter(function (entry) {
75 var _entry2 = (0, _slicedToArray3.default)(entry, 2),
76 pattern = _entry2[1];
77
78 var expression = new (Function.prototype.bind.apply(RegExp, [null].concat((0, _toConsumableArray3.default)(pattern))))();
79 return parsed.header.match(expression);
80 }).map(function (entry) {
81 return entry[0];
82 });
83
84 // found a wildcard match, skip
85
86 if (!(bails.length > 0)) {
87 _context.next = 5;
88 break;
89 }
90
91 return _context.abrupt('return', {
92 valid: true,
93 wildcards: bails,
94 rules: [],
95 warnings: [],
96 errors: []
97 });
98
99 case 5:
100
101 // validate against all rules
102 results = Object.entries(rules).filter(function (entry) {
103 var _entry3 = (0, _slicedToArray3.default)(entry, 2),
104 _entry3$ = (0, _slicedToArray3.default)(_entry3[1], 1),
105 level = _entry3$[0];
106
107 return level > 0;
108 }).map(function (entry) {
109 var _entry4 = (0, _slicedToArray3.default)(entry, 2),
110 name = _entry4[0],
111 config = _entry4[1];
112
113 var _config = (0, _slicedToArray3.default)(config, 3),
114 level = _config[0],
115 when = _config[1],
116 value = _config[2];
117
118 // Level 0 rules are ignored
119
120
121 if (level === 0) {
122 return null;
123 }
124
125 var rule = require(`./rules/${name}`);
126
127 var _rule = rule(parsed, when, value),
128 _rule2 = (0, _slicedToArray3.default)(_rule, 2),
129 valid = _rule2[0],
130 message = _rule2[1];
131
132 return {
133 level,
134 valid,
135 name,
136 message
137 };
138 }).filter(Boolean);
139 errors = results.filter(function (result) {
140 return result.level > 1 && !result.valid;
141 });
142 warnings = results.filter(function (result) {
143 return result.level < 2 && !result.valid;
144 });
145 valid = errors.length === 0;
146 return _context.abrupt('return', {
147 valid,
148 errors,
149 warnings
150 });
151
152 case 10:
153 case 'end':
154 return _context.stop();
155 }
156 }
157 }, _callee, undefined);
158 }));
159
160 return function (_x) {
161 return _ref.apply(this, arguments);
162 };
163}();
\No newline at end of file