Skip to content

Commit 7545df4

Browse files
committed
build: migrate JSDoc linting off removed core rules
Replace deprecated ESLint core rules `require-jsdoc` and `valid-jsdoc` (removed in ESLint v9) with `eslint-plugin-jsdoc` equivalents: - `require-jsdoc` → `jsdoc/require-jsdoc` (same option schema) - `valid-jsdoc` → individual `jsdoc/*` rules: - `jsdoc/require-description` (replaces `matchDescription`) - `jsdoc/require-param-description` (replaces `requireParamDescription`) - `jsdoc/require-returns-type` (replaces `requireReturnType`) - `jsdoc/require-returns-description` (replaces `requireReturnDescription`) - `jsdoc/check-tag-names` (validates tag names) - Register `jsdoc` plugin in `etc/eslint/plugins/index.js` - Update override files that disable `require-jsdoc` for tests, benchmarks, examples, and markdown Ref: stdlib-js/metr-issue-tracker#54
1 parent 8c36ac3 commit 7545df4

File tree

4 files changed

+54
-25
lines changed

4 files changed

+54
-25
lines changed

etc/eslint/overrides/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ var overrides = [
8989
'skipComments': true
9090
}],
9191
'no-restricted-syntax': restrictedSyntaxConfig,
92-
'require-jsdoc': 'off',
92+
'jsdoc/require-jsdoc': 'off',
9393
'stdlib/jsdoc-private-annotation': 'off',
9494
'stdlib/jsdoc-doctest': 'off',
9595
'stdlib/no-unnecessary-nested-functions': 'off'
@@ -101,7 +101,7 @@ var overrides = [
101101
'no-new-wrappers': 'warn',
102102
'vars-on-top': 'off',
103103
'no-console': 'off',
104-
'require-jsdoc': 'off',
104+
'jsdoc/require-jsdoc': 'off',
105105
'stdlib/jsdoc-private-annotation': 'off',
106106
'stdlib/jsdoc-doctest': 'off',
107107
'stdlib/no-unnecessary-nested-functions': 'off',
@@ -119,7 +119,7 @@ var overrides = [
119119
'skipComments': true
120120
}],
121121
'no-restricted-syntax': restrictedSyntaxConfig,
122-
'require-jsdoc': 'off',
122+
'jsdoc/require-jsdoc': 'off',
123123
'stdlib/jsdoc-private-annotation': 'off',
124124
'stdlib/jsdoc-doctest': 'off',
125125
'stdlib/no-unnecessary-nested-functions': 'off',
@@ -155,7 +155,7 @@ var overrides = [
155155
'no-tabs': 'error',
156156
'no-undef': 'off',
157157
'no-unused-vars': 'off',
158-
'require-jsdoc': 'off',
158+
'jsdoc/require-jsdoc': 'off',
159159
'stdlib/jsdoc-private-annotation': 'off',
160160
'stdlib/jsdoc-return-annotations-values': 'off',
161161
'stdlib/no-unnecessary-nested-functions': 'off',

etc/eslint/plugins/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
// ESLint plugins:
2222
var plugins = [
23+
'jsdoc',
2324
'n',
2425
'stdlib',
2526
'@cspell'

etc/eslint/rules/programmer_errors.js

Lines changed: 46 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -839,26 +839,54 @@ rules[ 'require-atomic-updates' ] = 'error';
839839
rules[ 'use-isnan' ] = 'error';
840840

841841
/**
842-
* Require valid JSDoc.
842+
* Require a JSDoc description.
843843
*
844-
* @name valid-jsdoc
844+
* @name jsdoc/require-description
845845
* @memberof rules
846-
* @type {Array}
847-
* @see [valid-jsdoc]{@link https://eslint.org/docs/rules/valid-jsdoc}
848-
*/
849-
rules[ 'valid-jsdoc' ] = [ 'error', {
850-
'prefer': {
851-
'arg': 'param',
852-
'argument': 'param',
853-
'class': 'constructor',
854-
'return': 'returns'
855-
},
856-
'requireReturn': false,
857-
'requireReturnType': true,
858-
'matchDescription': '.+',
859-
'requireParamDescription': true,
860-
'requireReturnDescription': true
861-
}];
846+
* @type {string}
847+
* @see [require-description]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md}
848+
*/
849+
rules[ 'jsdoc/require-description' ] = 'error';
850+
851+
/**
852+
* Require `@param` description.
853+
*
854+
* @name jsdoc/require-param-description
855+
* @memberof rules
856+
* @type {string}
857+
* @see [require-param-description]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md}
858+
*/
859+
rules[ 'jsdoc/require-param-description' ] = 'error';
860+
861+
/**
862+
* Require `@returns` type.
863+
*
864+
* @name jsdoc/require-returns-type
865+
* @memberof rules
866+
* @type {string}
867+
* @see [require-returns-type]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-type.md}
868+
*/
869+
rules[ 'jsdoc/require-returns-type' ] = 'error';
870+
871+
/**
872+
* Require `@returns` description.
873+
*
874+
* @name jsdoc/require-returns-description
875+
* @memberof rules
876+
* @type {string}
877+
* @see [require-returns-description]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-returns-description.md}
878+
*/
879+
rules[ 'jsdoc/require-returns-description' ] = 'error';
880+
881+
/**
882+
* Enforce valid JSDoc tag names.
883+
*
884+
* @name jsdoc/check-tag-names
885+
* @memberof rules
886+
* @type {string}
887+
* @see [check-tag-names]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md}
888+
*/
889+
rules[ 'jsdoc/check-tag-names' ] = 'error';
862890

863891
/**
864892
* Only allow the result of `typeof` to be compared against a select subset of known strings (e.g., 'string', 'undefined', etc.).

etc/eslint/rules/style.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1848,12 +1848,12 @@ rules[ 'quotes' ] = [ 'error', 'single', {
18481848
/**
18491849
* Require JSDoc comments.
18501850
*
1851-
* @name require-jsdoc
1851+
* @name jsdoc/require-jsdoc
18521852
* @memberof rules
18531853
* @type {Array}
1854-
* @see [require-jsdoc]{@link https://eslint.org/docs/rules/require-jsdoc}
1854+
* @see [require-jsdoc]{@link https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md}
18551855
*/
1856-
rules[ 'require-jsdoc' ] = [ 'error', {
1856+
rules[ 'jsdoc/require-jsdoc' ] = [ 'error', {
18571857
'require': {
18581858
'FunctionDeclaration': true,
18591859
'ClassDeclaration': true,

0 commit comments

Comments
 (0)