blob: 25d9d3d9fe94d2d0d73c86ac0286bfaec6125fb0 [file] [log] [blame]
Mathias Bynens79e2cf02020-05-29 16:46:17 +02001'use strict';
2
Tim van der Lippeefb716a2020-12-01 12:54:04 +00003const createPartialStylelintResult = require('./createPartialStylelintResult');
Mathias Bynens79e2cf02020-05-29 16:46:17 +02004
5/** @typedef {import('stylelint').PostcssResult} PostcssResult */
Tim van der Lippe16b82282021-11-08 13:50:26 +00006/** @typedef {import('stylelint').LintResult} StylelintResult */
Mathias Bynens79e2cf02020-05-29 16:46:17 +02007
8/**
Tim van der Lippe16b82282021-11-08 13:50:26 +00009 * @param {import('stylelint').InternalApi} stylelint
Mathias Bynens79e2cf02020-05-29 16:46:17 +020010 * @param {PostcssResult} [postcssResult]
11 * @param {string} [filePath]
Tim van der Lippe16b82282021-11-08 13:50:26 +000012 * @param {import('stylelint').CssSyntaxError} [cssSyntaxError]
Mathias Bynens79e2cf02020-05-29 16:46:17 +020013 * @return {Promise<StylelintResult>}
14 */
Tim van der Lippe16b82282021-11-08 13:50:26 +000015module.exports = async function createStylelintResult(
16 stylelint,
17 postcssResult,
18 filePath,
19 cssSyntaxError,
20) {
Tim van der Lippeefb716a2020-12-01 12:54:04 +000021 let stylelintResult = createPartialStylelintResult(postcssResult, cssSyntaxError);
Mathias Bynens79e2cf02020-05-29 16:46:17 +020022
Tim van der Lippe16b82282021-11-08 13:50:26 +000023 const configForFile = await stylelint.getConfigForFile(filePath, filePath);
Mathias Bynens79e2cf02020-05-29 16:46:17 +020024
Tim van der Lippe16b82282021-11-08 13:50:26 +000025 const config = configForFile === null ? {} : configForFile.config;
26 const file = stylelintResult.source || (cssSyntaxError && cssSyntaxError.file);
Mathias Bynens79e2cf02020-05-29 16:46:17 +020027
Tim van der Lippe16b82282021-11-08 13:50:26 +000028 if (config.resultProcessors) {
29 config.resultProcessors.forEach((resultProcessor) => {
30 // Result processors might just mutate the result object,
31 // or might return a new one
32 const returned = resultProcessor(stylelintResult, file);
Mathias Bynens79e2cf02020-05-29 16:46:17 +020033
Tim van der Lippe16b82282021-11-08 13:50:26 +000034 if (returned) {
35 stylelintResult = returned;
36 }
37 });
38 }
39
40 return stylelintResult;
Mathias Bynens79e2cf02020-05-29 16:46:17 +020041};