UNPKG

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