requireParamDescription.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.js"));
  7. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  8. var _default = exports.default = (0, _iterateJsdoc.default)(({
  9. context,
  10. report,
  11. settings,
  12. utils
  13. }) => {
  14. const {
  15. defaultDestructuredRootDescription = 'The root object',
  16. setDefaultDestructuredRootDescription = false
  17. } = context.options[0] || {};
  18. const functionParameterNames = utils.getFunctionParameterNames();
  19. let rootCount = -1;
  20. utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {
  21. rootCount += jsdocParameter.name.includes('.') ? 0 : 1;
  22. if (!jsdocParameter.description.trim()) {
  23. if (Array.isArray(functionParameterNames[rootCount])) {
  24. if (settings.exemptDestructuredRootsFromChecks) {
  25. return;
  26. }
  27. if (setDefaultDestructuredRootDescription) {
  28. utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {
  29. utils.changeTag(jsdocParameter, {
  30. description: defaultDestructuredRootDescription,
  31. postName: ' '
  32. });
  33. });
  34. return;
  35. }
  36. }
  37. report(`Missing JSDoc @${targetTagName} "${jsdocParameter.name}" description.`, null, jsdocParameter);
  38. }
  39. });
  40. }, {
  41. contextDefaults: true,
  42. meta: {
  43. docs: {
  44. description: 'Requires that each `@param` tag has a `description` value.',
  45. url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header'
  46. },
  47. fixable: 'code',
  48. schema: [{
  49. additionalProperties: false,
  50. properties: {
  51. contexts: {
  52. items: {
  53. anyOf: [{
  54. type: 'string'
  55. }, {
  56. additionalProperties: false,
  57. properties: {
  58. comment: {
  59. type: 'string'
  60. },
  61. context: {
  62. type: 'string'
  63. }
  64. },
  65. type: 'object'
  66. }]
  67. },
  68. type: 'array'
  69. },
  70. defaultDestructuredRootDescription: {
  71. type: 'string'
  72. },
  73. setDefaultDestructuredRootDescription: {
  74. type: 'boolean'
  75. }
  76. },
  77. type: 'object'
  78. }],
  79. type: 'suggestion'
  80. }
  81. });
  82. module.exports = exports.default;
  83. //# sourceMappingURL=requireParamDescription.js.map