From a7381c01430bbae5326106661ad9cf8c58b59dff Mon Sep 17 00:00:00 2001 From: Brett Zamir Date: Thu, 26 Jan 2023 10:10:43 -0700 Subject: [PATCH] feat: add config to report recommended rules as errors; fixes #956 --- src/index.js | 137 +++++++++++++++++++++++++++++---------------------- 1 file changed, 77 insertions(+), 60 deletions(-) diff --git a/src/index.js b/src/index.js index 55565a691..30095a618 100644 --- a/src/index.js +++ b/src/index.js @@ -49,66 +49,8 @@ import tagLines from './rules/tagLines'; import textEscaping from './rules/textEscaping'; import validTypes from './rules/validTypes'; -export default { - configs: { - recommended: { - plugins: [ - 'jsdoc', - ], - rules: { - 'jsdoc/check-access': 'warn', - 'jsdoc/check-alignment': 'warn', - 'jsdoc/check-examples': 'off', - 'jsdoc/check-indentation': 'off', - 'jsdoc/check-line-alignment': 'off', - 'jsdoc/check-param-names': 'warn', - 'jsdoc/check-property-names': 'warn', - 'jsdoc/check-syntax': 'off', - 'jsdoc/check-tag-names': 'warn', - 'jsdoc/check-types': 'warn', - 'jsdoc/check-values': 'warn', - 'jsdoc/empty-tags': 'warn', - 'jsdoc/implements-on-classes': 'warn', - 'jsdoc/match-description': 'off', - 'jsdoc/match-name': 'off', - 'jsdoc/multiline-blocks': 'warn', - 'jsdoc/newline-after-description': 'warn', - 'jsdoc/no-bad-blocks': 'off', - 'jsdoc/no-defaults': 'off', - 'jsdoc/no-missing-syntax': 'off', - 'jsdoc/no-multi-asterisks': 'warn', - 'jsdoc/no-restricted-syntax': 'off', - 'jsdoc/no-types': 'off', - 'jsdoc/no-undefined-types': 'warn', - 'jsdoc/require-asterisk-prefix': 'off', - 'jsdoc/require-description': 'off', - 'jsdoc/require-description-complete-sentence': 'off', - 'jsdoc/require-example': 'off', - 'jsdoc/require-file-overview': 'off', - 'jsdoc/require-hyphen-before-param-description': 'off', - 'jsdoc/require-jsdoc': 'warn', - 'jsdoc/require-param': 'warn', - 'jsdoc/require-param-description': 'warn', - 'jsdoc/require-param-name': 'warn', - 'jsdoc/require-param-type': 'warn', - 'jsdoc/require-property': 'warn', - 'jsdoc/require-property-description': 'warn', - 'jsdoc/require-property-name': 'warn', - 'jsdoc/require-property-type': 'warn', - 'jsdoc/require-returns': 'warn', - 'jsdoc/require-returns-check': 'warn', - 'jsdoc/require-returns-description': 'warn', - 'jsdoc/require-returns-type': 'warn', - 'jsdoc/require-throws': 'off', - 'jsdoc/require-yields': 'warn', - 'jsdoc/require-yields-check': 'warn', - 'jsdoc/sort-tags': 'off', - 'jsdoc/tag-lines': 'warn', - 'jsdoc/text-escaping': 'off', - 'jsdoc/valid-types': 'warn', - }, - }, - }, +const index = { + configs: {}, rules: { 'check-access': checkAccess, 'check-alignment': checkAlignment, @@ -162,3 +104,78 @@ export default { 'valid-types': validTypes, }, }; + +for (const [ + config, + warnOrError, +] of [ + [ + 'recommended', + 'warn', + ], + [ + 'recommended-error', + 'error', + ], + ] +) { + index.configs[config] = { + plugins: [ + 'jsdoc', + ], + rules: { + 'jsdoc/check-access': warnOrError, + 'jsdoc/check-alignment': warnOrError, + 'jsdoc/check-examples': 'off', + 'jsdoc/check-indentation': 'off', + 'jsdoc/check-line-alignment': 'off', + 'jsdoc/check-param-names': warnOrError, + 'jsdoc/check-property-names': warnOrError, + 'jsdoc/check-syntax': 'off', + 'jsdoc/check-tag-names': warnOrError, + 'jsdoc/check-types': warnOrError, + 'jsdoc/check-values': warnOrError, + 'jsdoc/empty-tags': warnOrError, + 'jsdoc/implements-on-classes': warnOrError, + 'jsdoc/match-description': 'off', + 'jsdoc/match-name': 'off', + 'jsdoc/multiline-blocks': warnOrError, + 'jsdoc/newline-after-description': warnOrError, + 'jsdoc/no-bad-blocks': 'off', + 'jsdoc/no-defaults': 'off', + 'jsdoc/no-missing-syntax': 'off', + 'jsdoc/no-multi-asterisks': warnOrError, + 'jsdoc/no-restricted-syntax': 'off', + 'jsdoc/no-types': 'off', + 'jsdoc/no-undefined-types': warnOrError, + 'jsdoc/require-asterisk-prefix': 'off', + 'jsdoc/require-description': 'off', + 'jsdoc/require-description-complete-sentence': 'off', + 'jsdoc/require-example': 'off', + 'jsdoc/require-file-overview': 'off', + 'jsdoc/require-hyphen-before-param-description': 'off', + 'jsdoc/require-jsdoc': warnOrError, + 'jsdoc/require-param': warnOrError, + 'jsdoc/require-param-description': warnOrError, + 'jsdoc/require-param-name': warnOrError, + 'jsdoc/require-param-type': warnOrError, + 'jsdoc/require-property': warnOrError, + 'jsdoc/require-property-description': warnOrError, + 'jsdoc/require-property-name': warnOrError, + 'jsdoc/require-property-type': warnOrError, + 'jsdoc/require-returns': warnOrError, + 'jsdoc/require-returns-check': warnOrError, + 'jsdoc/require-returns-description': warnOrError, + 'jsdoc/require-returns-type': warnOrError, + 'jsdoc/require-throws': 'off', + 'jsdoc/require-yields': warnOrError, + 'jsdoc/require-yields-check': warnOrError, + 'jsdoc/sort-tags': 'off', + 'jsdoc/tag-lines': warnOrError, + 'jsdoc/text-escaping': 'off', + 'jsdoc/valid-types': warnOrError, + }, + }; +} + +export default index;