prepareReturnValue.js 2.0 KB

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