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.topairs');
|
28 |
|
29 | var _lodash2 = _interopRequireDefault(_lodash);
|
30 |
|
31 | var _lodash3 = require('lodash.merge');
|
32 |
|
33 | var _lodash4 = _interopRequireDefault(_lodash3);
|
34 |
|
35 | var _lodash5 = require('lodash.mergewith');
|
36 |
|
37 | var _lodash6 = _interopRequireDefault(_lodash5);
|
38 |
|
39 | var _lodash7 = require('lodash.pick');
|
40 |
|
41 | var _lodash8 = _interopRequireDefault(_lodash7);
|
42 |
|
43 | var _resolveFrom = require('resolve-from');
|
44 |
|
45 | var _resolveFrom2 = _interopRequireDefault(_resolveFrom);
|
46 |
|
47 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
48 |
|
49 | const w = (a, b) => Array.isArray(b) ? b : undefined;
|
50 | const valid = input => (0, _lodash8.default)(input, 'extends', 'rules', 'parserPreset', 'formatter');
|
51 |
|
52 | exports.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: {}, formatter: '@commitlint/format' }, (0, _lodash8.default)(config, 'extends'));
|
60 |
|
61 |
|
62 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
158 | function 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 | }
|
181 | module.exports = exports['default'];
|
182 |
|
\ | No newline at end of file |