UNPKG

2.01 kBJavaScriptView Raw
1'use strict';
2
3const descriptionlessDisables = require('./descriptionlessDisables');
4const invalidScopeDisables = require('./invalidScopeDisables');
5const needlessDisables = require('./needlessDisables');
6const reportDisables = require('./reportDisables');
7
8/** @typedef {import('stylelint').Formatter} Formatter */
9/** @typedef {import('stylelint').StylelintResult} StylelintResult */
10/** @typedef {import('stylelint').StylelintStandaloneOptions} StylelintStandaloneOptions */
11/** @typedef {import('stylelint').StylelintStandaloneReturnValue} StylelintStandaloneReturnValue */
12
13/**
14 * @param {StylelintResult[]} stylelintResults
15 * @param {StylelintStandaloneOptions} options
16 * @param {Formatter} formatter
17 *
18 * @returns {StylelintStandaloneReturnValue}
19 */
20function prepareReturnValue(stylelintResults, options, formatter) {
21 const {
22 reportNeedlessDisables,
23 reportInvalidScopeDisables,
24 reportDescriptionlessDisables,
25 maxWarnings,
26 } = options;
27
28 const errored = stylelintResults.some(
29 (result) => result.errored || result.parseErrors.length > 0,
30 );
31
32 /** @type {StylelintStandaloneReturnValue} */
33 const returnValue = {
34 errored,
35 results: [],
36 output: '',
37 reportedDisables: reportDisables(stylelintResults),
38 };
39
40 if (reportNeedlessDisables) {
41 returnValue.needlessDisables = needlessDisables(stylelintResults);
42 }
43
44 if (reportInvalidScopeDisables) {
45 returnValue.invalidScopeDisables = invalidScopeDisables(stylelintResults);
46 }
47
48 if (reportDescriptionlessDisables) {
49 returnValue.descriptionlessDisables = descriptionlessDisables(stylelintResults);
50 }
51
52 if (maxWarnings !== undefined) {
53 const foundWarnings = stylelintResults.reduce((count, file) => {
54 return count + file.warnings.length;
55 }, 0);
56
57 if (foundWarnings > maxWarnings) {
58 returnValue.maxWarningsExceeded = { maxWarnings, foundWarnings };
59 }
60 }
61
62 returnValue.output = formatter(stylelintResults, returnValue);
63 returnValue.results = stylelintResults;
64
65 return returnValue;
66}
67
68module.exports = prepareReturnValue;