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 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34 |
|
35 | const w = (a, b) => Array.isArray(b) ? b : undefined;
|
36 | const valid = input => (0, _lodash.pick)(input, 'extends', 'rules', 'parserPreset', 'formatter');
|
37 |
|
38 | exports.default = (seed = {}, options = { cwd: process.cwd() }) => new Promise(function ($return, $error) {
|
39 | var loaded, base, config, opts, resolvedParserPreset, extended, preset, executed;
|
40 | return Promise.resolve(loadConfig(options.cwd, options.file)).then(function ($await_3) {
|
41 | try {
|
42 | loaded = $await_3;
|
43 | base = loaded.filepath ? _path2.default.dirname(loaded.filepath) : options.cwd;
|
44 | config = valid((0, _lodash.merge)(loaded.config, seed));
|
45 | opts = (0, _lodash.merge)({ extends: [], rules: {}, formatter: '@commitlint/format' }, (0, _lodash.pick)(config, 'extends'));
|
46 |
|
47 |
|
48 |
|
49 | if (typeof config.parserPreset === 'string') {
|
50 | resolvedParserPreset = (0, _resolveFrom2.default)(base, config.parserPreset);
|
51 | return Promise.resolve(require(resolvedParserPreset)).then(function ($await_4) {
|
52 | try {
|
53 |
|
54 | config.parserPreset = {
|
55 | name: config.parserPreset,
|
56 | path: resolvedParserPreset,
|
57 | parserOpts: $await_4.parserOpts
|
58 | };
|
59 | return $If_1.call(this);
|
60 | } catch ($boundEx) {
|
61 | return $error($boundEx);
|
62 | }
|
63 | }.bind(this), $error);
|
64 | }
|
65 |
|
66 |
|
67 |
|
68 | function $If_1() {
|
69 | extended = (0, _resolveExtends2.default)(opts, {
|
70 | prefix: 'commitlint-config',
|
71 | cwd: base,
|
72 | parserPreset: config.parserPreset
|
73 | });
|
74 | preset = valid((0, _lodash.mergeWith)(extended, config, w));
|
75 |
|
76 |
|
77 | if (typeof preset.parserPreset === 'object' && typeof preset.parserPreset.parserOpts === 'object' && typeof preset.parserPreset.parserOpts.then === 'function') {
|
78 | return Promise.resolve(preset.parserPreset.parserOpts).then(function ($await_5) {
|
79 | try {
|
80 | preset.parserPreset.parserOpts = $await_5.parserOpts;
|
81 | return $If_2.call(this);
|
82 | } catch ($boundEx) {
|
83 | return $error($boundEx);
|
84 | }
|
85 | }.bind(this), $error);
|
86 | }
|
87 |
|
88 |
|
89 |
|
90 | function $If_2() {
|
91 | if (typeof config.formatter === 'string') {
|
92 | preset.formatter = _resolveFrom2.default.silent(base, config.formatter) || config.formatter;
|
93 | }
|
94 |
|
95 |
|
96 | return Promise.resolve(Promise.all(['rules'].map(key => [key, preset[key]]).map(item => new Promise(function ($return, $error) {
|
97 | var _item, key, value, executedValue;
|
98 |
|
99 | _item = (0, _slicedToArray3.default)(item, 2);
|
100 | key = _item[0], value = _item[1];
|
101 | return Promise.resolve(Promise.all((0, _lodash.toPairs)(value || {}).map(entry => (0, _executeRule2.default)(entry)))).then(function ($await_6) {
|
102 | try {
|
103 | executedValue = $await_6;
|
104 |
|
105 | return $return([key, executedValue.reduce((registry, item) => {
|
106 | var _item2 = (0, _slicedToArray3.default)(item, 2);
|
107 |
|
108 | const key = _item2[0],
|
109 | value = _item2[1];
|
110 |
|
111 | registry[key] = value;
|
112 | return registry;
|
113 | }, {})]);
|
114 | } catch ($boundEx) {
|
115 | return $error($boundEx);
|
116 | }
|
117 | }.bind(this), $error);
|
118 | }.bind(this))))).then(function ($await_7) {
|
119 | try {
|
120 | executed = $await_7;
|
121 |
|
122 |
|
123 |
|
124 | return $return(executed.reduce((registry, item) => {
|
125 | var _item3 = (0, _slicedToArray3.default)(item, 2);
|
126 |
|
127 | const key = _item3[0],
|
128 | value = _item3[1];
|
129 |
|
130 | registry[key] = value;
|
131 | return registry;
|
132 | }, preset));
|
133 | } catch ($boundEx) {
|
134 | return $error($boundEx);
|
135 | }
|
136 | }.bind(this), $error);
|
137 | }
|
138 |
|
139 | return $If_2.call(this);
|
140 | }
|
141 |
|
142 | return $If_1.call(this);
|
143 | } catch ($boundEx) {
|
144 | return $error($boundEx);
|
145 | }
|
146 | }.bind(this), $error);
|
147 | }.bind(this));
|
148 |
|
149 | function loadConfig(cwd, configPath) {
|
150 | return new Promise(function ($return, $error) {
|
151 | var explorer, local;
|
152 | explorer = (0, _cosmiconfig2.default)('commitlint', {
|
153 | rcExtensions: true,
|
154 | configPath: configPath ? _path2.default.resolve(cwd, configPath) : null
|
155 | });
|
156 | return Promise.resolve(explorer.load(cwd)).then(function ($await_8) {
|
157 | try {
|
158 | local = $await_8;
|
159 |
|
160 |
|
161 | if (local) {
|
162 | return $return(local);
|
163 | }
|
164 |
|
165 | return $return({});
|
166 | } catch ($boundEx) {
|
167 | return $error($boundEx);
|
168 | }
|
169 | }.bind(this), $error);
|
170 | }.bind(this));
|
171 | }
|
172 | module.exports = exports['default'];
|
173 |
|
\ | No newline at end of file |