1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
8 |
|
9 | var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
10 |
|
11 | var _path = require('path');
|
12 |
|
13 | var _path2 = _interopRequireDefault(_path);
|
14 |
|
15 | var _executeRule = require('@commitlint/execute-rule');
|
16 |
|
17 | var _executeRule2 = _interopRequireDefault(_executeRule);
|
18 |
|
19 | var _resolveExtends = require('@commitlint/resolve-extends');
|
20 |
|
21 | var _resolveExtends2 = _interopRequireDefault(_resolveExtends);
|
22 |
|
23 | var _cosmiconfig = require('cosmiconfig');
|
24 |
|
25 | var _cosmiconfig2 = _interopRequireDefault(_cosmiconfig);
|
26 |
|
27 | var _lodash = require('lodash');
|
28 |
|
29 | var _resolveFrom = require('resolve-from');
|
30 |
|
31 | var _resolveFrom2 = _interopRequireDefault(_resolveFrom);
|
32 |
|
33 | var _loadPlugin = require('./utils/loadPlugin');
|
34 |
|
35 | var _loadPlugin2 = _interopRequireDefault(_loadPlugin);
|
36 |
|
37 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
38 |
|
39 | const w = (a, b) => Array.isArray(b) ? b : undefined;
|
40 | const valid = input => (0, _lodash.pick)(input, 'extends', 'rules', 'plugins', 'parserPreset', 'formatter', 'ignores', 'defaultIgnores');
|
41 |
|
42 | exports.default = (seed = {}, options = { cwd: process.cwd() }) => new Promise(function ($return, $error) {
|
43 | var loaded, base, config, opts, resolvedParserPreset, extended, preset, executed;
|
44 | return Promise.resolve(loadConfig(options.cwd, options.file)).then(function ($await_4) {
|
45 | try {
|
46 | loaded = $await_4;
|
47 | base = loaded.filepath ? _path2.default.dirname(loaded.filepath) : options.cwd;
|
48 | config = valid((0, _lodash.merge)({}, loaded.config, seed));
|
49 | opts = (0, _lodash.merge)({ extends: [], rules: {}, formatter: '@commitlint/format' }, (0, _lodash.pick)(config, 'extends', 'plugins', 'ignores', 'defaultIgnores'));
|
50 |
|
51 |
|
52 |
|
53 | if (typeof config.parserPreset === 'string') {
|
54 | let resolvedParserConfig;
|
55 | resolvedParserPreset = (0, _resolveFrom2.default)(base, config.parserPreset);
|
56 | return Promise.resolve(require(resolvedParserPreset)).then(function ($await_5) {
|
57 | try {
|
58 | resolvedParserConfig = $await_5;
|
59 |
|
60 |
|
61 | if (typeof resolvedParserConfig === 'function') {
|
62 | return Promise.resolve(resolvedParserConfig()).then(function ($await_6) {
|
63 | try {
|
64 | resolvedParserConfig = $await_6;
|
65 | return $If_3.call(this);
|
66 | } catch ($boundEx) {
|
67 | return $error($boundEx);
|
68 | }
|
69 | }.bind(this), $error);
|
70 | }
|
71 |
|
72 | function $If_3() {
|
73 | config.parserPreset = {
|
74 | name: config.parserPreset,
|
75 | path: resolvedParserPreset,
|
76 | parserOpts: resolvedParserConfig.parserOpts
|
77 | };
|
78 | return $If_1.call(this);
|
79 | }
|
80 |
|
81 | return $If_3.call(this);
|
82 | } catch ($boundEx) {
|
83 | return $error($boundEx);
|
84 | }
|
85 | }.bind(this), $error);
|
86 | }
|
87 |
|
88 |
|
89 |
|
90 | function $If_1() {
|
91 | extended = (0, _resolveExtends2.default)(opts, {
|
92 | prefix: 'commitlint-config',
|
93 | cwd: base,
|
94 | parserPreset: config.parserPreset
|
95 | });
|
96 | preset = valid((0, _lodash.mergeWith)(extended, config, w));
|
97 |
|
98 |
|
99 | if (typeof preset.parserPreset === 'object' && typeof preset.parserPreset.parserOpts === 'object' && typeof preset.parserPreset.parserOpts.then === 'function') {
|
100 | return Promise.resolve(preset.parserPreset.parserOpts).then(function ($await_7) {
|
101 | try {
|
102 | preset.parserPreset.parserOpts = $await_7.parserOpts;
|
103 | return $If_2.call(this);
|
104 | } catch ($boundEx) {
|
105 | return $error($boundEx);
|
106 | }
|
107 | }.bind(this), $error);
|
108 | }
|
109 |
|
110 |
|
111 |
|
112 | function $If_2() {
|
113 | if (typeof config.formatter === 'string') {
|
114 | preset.formatter = _resolveFrom2.default.silent(base, config.formatter) || config.formatter;
|
115 | }
|
116 |
|
117 |
|
118 | preset.plugins = {};
|
119 | if (config.plugins && config.plugins.length) {
|
120 | config.plugins.forEach(pluginKey => {
|
121 | (0, _loadPlugin2.default)(preset.plugins, pluginKey, process.env.DEBUG === 'true');
|
122 | });
|
123 | }
|
124 |
|
125 |
|
126 | return Promise.resolve(Promise.all(['rules'].map(key => [key, preset[key]]).map(item => new Promise(function ($return, $error) {
|
127 | var _item, key, value, executedValue;
|
128 |
|
129 | _item = (0, _slicedToArray3.default)(item, 2);
|
130 | key = _item[0], value = _item[1];
|
131 | return Promise.resolve(Promise.all((0, _lodash.toPairs)(value || {}).map(entry => (0, _executeRule2.default)(entry)))).then(function ($await_8) {
|
132 | try {
|
133 | executedValue = $await_8;
|
134 |
|
135 | return $return([key, executedValue.reduce((registry, item) => {
|
136 | var _item2 = (0, _slicedToArray3.default)(item, 2);
|
137 |
|
138 | const key = _item2[0],
|
139 | value = _item2[1];
|
140 |
|
141 | registry[key] = value;
|
142 | return registry;
|
143 | }, {})]);
|
144 | } catch ($boundEx) {
|
145 | return $error($boundEx);
|
146 | }
|
147 | }.bind(this), $error);
|
148 | }.bind(this))))).then(function ($await_9) {
|
149 | try {
|
150 | executed = $await_9;
|
151 |
|
152 |
|
153 |
|
154 | return $return(executed.reduce((registry, item) => {
|
155 | var _item3 = (0, _slicedToArray3.default)(item, 2);
|
156 |
|
157 | const key = _item3[0],
|
158 | value = _item3[1];
|
159 |
|
160 | registry[key] = value;
|
161 | return registry;
|
162 | }, preset));
|
163 | } catch ($boundEx) {
|
164 | return $error($boundEx);
|
165 | }
|
166 | }.bind(this), $error);
|
167 | }
|
168 |
|
169 | return $If_2.call(this);
|
170 | }
|
171 |
|
172 | return $If_1.call(this);
|
173 | } catch ($boundEx) {
|
174 | return $error($boundEx);
|
175 | }
|
176 | }.bind(this), $error);
|
177 | }.bind(this));
|
178 |
|
179 | function loadConfig(cwd, configPath) {
|
180 | return new Promise(function ($return, $error) {
|
181 | var explorer, explicitPath, explore, searchPath, local;
|
182 | explorer = (0, _cosmiconfig2.default)('commitlint');
|
183 | explicitPath = configPath ? _path2.default.resolve(cwd, configPath) : undefined;
|
184 | explore = explicitPath ? explorer.load : explorer.search;
|
185 | searchPath = explicitPath ? explicitPath : cwd;
|
186 | return Promise.resolve(explore(searchPath)).then(function ($await_10) {
|
187 | try {
|
188 | local = $await_10;
|
189 |
|
190 |
|
191 | if (local) {
|
192 | return $return(local);
|
193 | }
|
194 |
|
195 | return $return({});
|
196 | } catch ($boundEx) {
|
197 | return $error($boundEx);
|
198 | }
|
199 | }.bind(this), $error);
|
200 | }.bind(this));
|
201 | }
|
202 | module.exports = exports.default;
|
203 |
|
\ | No newline at end of file |