'use strict'; const createPartialStylelintResult = require('./createPartialStylelintResult'); /** @typedef {import('stylelint').PostcssResult} PostcssResult */ /** @typedef {import('postcss').NodeSource} NodeSource */ /** @typedef {import('stylelint').StylelintResult} StylelintResult */ /** * @param {import('stylelint').StylelintInternalApi} stylelint * @param {PostcssResult} [postcssResult] * @param {string} [filePath] * @param {import('stylelint').StylelintCssSyntaxError} [cssSyntaxError] * @return {Promise} */ module.exports = function (stylelint, postcssResult, filePath, cssSyntaxError) { let stylelintResult = createPartialStylelintResult(postcssResult, cssSyntaxError); return stylelint.getConfigForFile(filePath).then((configForFile) => { // TODO TYPES handle possible null here const config = /** @type {{ config: import('stylelint').StylelintConfig, filepath: string }} */ (configForFile) .config; const file = stylelintResult.source || (cssSyntaxError && cssSyntaxError.file); if (config.resultProcessors) { config.resultProcessors.forEach((resultProcessor) => { // Result processors might just mutate the result object, // or might return a new one const returned = resultProcessor(stylelintResult, file); if (returned) { stylelintResult = returned; } }); } return stylelintResult; }); };