UNPKG

4.83 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 _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
9
10var _conventionalCommitsParser = require('conventional-commits-parser');
11
12var _lodash = require('lodash');
13
14var _getConfiguration2 = require('./library/get-configuration');
15
16var _getConfiguration3 = _interopRequireDefault(_getConfiguration2);
17
18var _getMessages2 = require('./library/get-messages');
19
20var _getMessages3 = _interopRequireDefault(_getMessages2);
21
22var _getPreset2 = require('./library/get-preset');
23
24var _getPreset3 = _interopRequireDefault(_getPreset2);
25
26var _format2 = require('./library/format');
27
28var _format3 = _interopRequireDefault(_format2);
29
30function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
32function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }
33
34function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { return step("next", value); }, function (err) { return step("throw", err); }); } } return step("next"); }); }; }
35
36exports.getConfiguration = _getConfiguration3.default;
37exports.getMessages = _getMessages3.default;
38exports.getPreset = _getPreset3.default;
39exports.format = _format3.default;
40
41exports.default = (() => {
42 var ref = _asyncToGenerator(function* (message) {
43 let options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
44 const parserOptions = options.preset.parserOpts;
45 var _options$configuratio = options.configuration;
46 const rules = _options$configuratio.rules;
47 const wildcards = _options$configuratio.wildcards;
48
49 // parse the commit message
50
51 const parsed = (0, _lodash.merge)({ raw: message }, (0, _conventionalCommitsParser.sync)(message, parserOptions));
52
53 // wildcard matches skip the linting
54 const bails = Object.entries(wildcards).filter(function (entry) {
55 var _entry = _slicedToArray(entry, 2);
56
57 const pattern = _entry[1];
58
59 return Array.isArray(pattern);
60 }).filter(function (entry) {
61 var _entry2 = _slicedToArray(entry, 2);
62
63 const pattern = _entry2[1];
64
65 const expression = new (Function.prototype.bind.apply(RegExp, [null].concat(_toConsumableArray(pattern))))();
66 return parsed.header.match(expression);
67 }).map(function (entry) {
68 return entry[0];
69 });
70
71 // found a wildcard match, skip
72 if (bails.length > 0) {
73 return {
74 valid: true,
75 wildcards: bails,
76 rules: [],
77 warnings: [],
78 errors: []
79 };
80 }
81
82 // validate against all rules
83 const results = Object.entries(rules).filter(function (entry) {
84 var _entry3 = _slicedToArray(entry, 2);
85
86 var _entry3$ = _slicedToArray(_entry3[1], 1);
87
88 const level = _entry3$[0];
89
90 return level > 0;
91 }).map(function (entry) {
92 var _entry4 = _slicedToArray(entry, 2);
93
94 const name = _entry4[0];
95 const config = _entry4[1];
96
97 var _config = _slicedToArray(config, 3);
98
99 const level = _config[0];
100 const when = _config[1];
101 const value = _config[2];
102
103 // Level 0 rules are ignored
104
105 if (level === 0) {
106 return null;
107 }
108
109 const rule = require(`./rules/${ name }`);
110
111 var _rule = rule(parsed, when, value);
112
113 var _rule2 = _slicedToArray(_rule, 2);
114
115 const valid = _rule2[0];
116 const message = _rule2[1];
117
118
119 return {
120 level,
121 valid,
122 name,
123 message
124 };
125 }).filter(Boolean);
126
127 const errors = results.filter(function (result) {
128 return result.level > 1 && !result.valid;
129 });
130
131 const warnings = results.filter(function (result) {
132 return result.level < 2 && !result.valid;
133 });
134
135 const valid = errors.length === 0;
136
137 return {
138 valid,
139 errors,
140 warnings
141 };
142 }),
143 _this = undefined;
144
145 return function (_x, _x2) {
146 return ref.apply(_this, arguments);
147 };
148})();
\No newline at end of file