Skip to content

Commit 70c1b2e

Browse files
authored
fix(require-tags): change rule name to be consistent with other rules (#1535)
BREAKING CHANGE: Changes `required-tags` to `require-tags`.
1 parent 47299db commit 70c1b2e

File tree

9 files changed

+119
-34
lines changed

9 files changed

+119
-34
lines changed

.README/rules/required-tags.md renamed to .README/rules/require-tags.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# `required-tags`
1+
# `require-tags`
22

33
Requires tags be present, optionally for specific contexts.
44

@@ -16,8 +16,8 @@ Requires tags be present, optionally for specific contexts.
1616

1717
## Failing examples
1818

19-
<!-- assertions-failing requiredTags -->
19+
<!-- assertions-failing requireTags -->
2020

2121
## Passing examples
2222

23-
<!-- assertions-passing requiredTags -->
23+
<!-- assertions-passing requireTags -->

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,7 @@ non-default-recommended fixer).
479479
|:heavy_check_mark:|| [require-returns-check](./docs/rules/require-returns-check.md#readme) | Requires a return statement in function body if a `@returns` tag is specified in JSDoc comment(and reports if multiple `@returns` tags are present). |
480480
|:heavy_check_mark:|| [require-returns-description](./docs/rules/require-returns-description.md#readme) | Requires that the `@returns` tag has a `description` value (not including `void`/`undefined` type returns). |
481481
|:heavy_check_mark: (Off in TS; On in TS flavor)|| [require-returns-type](./docs/rules/require-returns-type.md#readme) | Requires that `@returns` tag has type value (in curly brackets). |
482+
||| [require-tags](./docs/rules/require-tags.md#readme) | Requires tags be present, optionally for specific contexts |
482483
||| [require-template](./docs/rules/require-template.md#readme) | Requires `@template` tags be present when type parameters are used. |
483484
||| [require-throws](./docs/rules/require-throws.md#readme) | Requires that throw statements are documented with `@throws` tags. |
484485
||| [require-throws-description](./docs/rules/require-throws-description.md#readme) | Requires a description for `@throws` tags |
@@ -487,7 +488,6 @@ non-default-recommended fixer).
487488
|:heavy_check_mark:|| [require-yields-check](./docs/rules/require-yields-check.md#readme) | Ensures that if a `@yields` is present that a `yield` (or `yield` with a value) is present in the function body (or that if a `@next` is present that there is a yield with a return value present). |
488489
||| [require-yields-description](./docs/rules/require-yields-description.md#readme) | Requires a description for `@yields` tags |
489490
|:heavy_check_mark:|| [require-yields-type](./docs/rules/require-yields-type.md#readme) | Requires a type for `@yields` tags |
490-
||| [required-tags](./docs/rules/required-tags.md#readme) | Requires tags be present, optionally for specific contexts |
491491
||:wrench:| [sort-tags](./docs/rules/sort-tags.md#readme) | Sorts tags by a specified sequence according to tag name, optionally adding line breaks between tag groups. |
492492
|:heavy_check_mark:|:wrench:| [tag-lines](./docs/rules/tag-lines.md#readme) | Enforces lines (or no lines) between tags. |
493493
||:wrench:| [text-escaping](./docs/rules/text-escaping.md#readme) | Auto-escape certain characters that are input within block and tag descriptions. |

docs/rules/require-tags.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
<a name="user-content-require-tags"></a>
2+
<a name="require-tags"></a>
3+
# <code>require-tags</code>
4+
5+
Requires tags be present, optionally for specific contexts.
6+
7+
<a name="user-content-require-tags-options"></a>
8+
<a name="require-tags-options"></a>
9+
## Options
10+
11+
A single options object has the following properties.
12+
13+
<a name="user-content-require-tags-options-tags"></a>
14+
<a name="require-tags-options-tags"></a>
15+
### <code>tags</code>
16+
17+
May be an array of either strings or objects with
18+
a string `tag` property and `context` string property.
19+
20+
21+
|||
22+
|---|---|
23+
|Context|everywhere|
24+
|Tags|(Any)|
25+
|Recommended|false|
26+
|Settings||
27+
|Options|`tags`|
28+
29+
<a name="user-content-require-tags-failing-examples"></a>
30+
<a name="require-tags-failing-examples"></a>
31+
## Failing examples
32+
33+
The following patterns are considered problems:
34+
35+
````ts
36+
/**
37+
*
38+
*/
39+
function quux () {}
40+
// "jsdoc/require-tags": ["error"|"warn", {"tags":["see"]}]
41+
// Message: Missing required tag "see"
42+
43+
/**
44+
*
45+
*/
46+
function quux () {}
47+
// "jsdoc/require-tags": ["error"|"warn", {"tags":[{"context":"FunctionDeclaration","tag":"see"}]}]
48+
// Message: Missing required tag "see"
49+
50+
/**
51+
* @type {SomeType}
52+
*/
53+
function quux () {}
54+
// "jsdoc/require-tags": ["error"|"warn", {"tags":[{"context":"FunctionDeclaration","tag":"see"}]}]
55+
// Message: Missing required tag "see"
56+
57+
/**
58+
* @type {SomeType}
59+
*/
60+
function quux () {}
61+
// Message: Rule `require-tags` is missing a `tags` option.
62+
````
63+
64+
65+
66+
<a name="user-content-require-tags-passing-examples"></a>
67+
<a name="require-tags-passing-examples"></a>
68+
## Passing examples
69+
70+
The following patterns are not considered problems:
71+
72+
````ts
73+
/**
74+
* @see
75+
*/
76+
function quux () {}
77+
// "jsdoc/require-tags": ["error"|"warn", {"tags":["see"]}]
78+
79+
/**
80+
*
81+
*/
82+
class Quux {}
83+
// "jsdoc/require-tags": ["error"|"warn", {"tags":[{"context":"FunctionDeclaration","tag":"see"}]}]
84+
````
85+

src/index-cjs.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ import noUndefinedTypes from './rules/noUndefinedTypes.js';
4040
import requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';
4141
import requireDescription from './rules/requireDescription.js';
4242
import requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';
43-
import requiredTags from './rules/requiredTags.js';
4443
import requireExample from './rules/requireExample.js';
4544
import requireFileOverview from './rules/requireFileOverview.js';
4645
import requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';
@@ -57,6 +56,7 @@ import requireReturns from './rules/requireReturns.js';
5756
import requireReturnsCheck from './rules/requireReturnsCheck.js';
5857
import requireReturnsDescription from './rules/requireReturnsDescription.js';
5958
import requireReturnsType from './rules/requireReturnsType.js';
59+
import requireTags from './rules/requireTags.js';
6060
import requireTemplate from './rules/requireTemplate.js';
6161
import requireThrows from './rules/requireThrows.js';
6262
import requireYields from './rules/requireYields.js';
@@ -179,6 +179,7 @@ index.rules = {
179179
'require-returns-check': requireReturnsCheck,
180180
'require-returns-description': requireReturnsDescription,
181181
'require-returns-type': requireReturnsType,
182+
'require-tags': requireTags,
182183
'require-template': requireTemplate,
183184
'require-throws': requireThrows,
184185
'require-throws-description': buildForbidRuleDefinition({
@@ -227,7 +228,6 @@ index.rules = {
227228
description: 'Requires a type for `@yields` tags',
228229
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',
229230
}),
230-
'required-tags': requiredTags,
231231
'sort-tags': sortTags,
232232
'tag-lines': tagLines,
233233
'text-escaping': textEscaping,
@@ -306,6 +306,7 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
306306
'jsdoc/require-returns-check': warnOrError,
307307
'jsdoc/require-returns-description': warnOrError,
308308
'jsdoc/require-returns-type': warnOrError,
309+
'jsdoc/require-tags': 'off',
309310
'jsdoc/require-template': 'off',
310311
'jsdoc/require-throws': 'off',
311312
'jsdoc/require-throws-description': 'off',
@@ -314,7 +315,6 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
314315
'jsdoc/require-yields-check': warnOrError,
315316
'jsdoc/require-yields-description': 'off',
316317
'jsdoc/require-yields-type': warnOrError,
317-
'jsdoc/required-tags': 'off',
318318
'jsdoc/sort-tags': 'off',
319319
'jsdoc/tag-lines': warnOrError,
320320
'jsdoc/text-escaping': 'off',

src/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ import noUndefinedTypes from './rules/noUndefinedTypes.js';
4646
import requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';
4747
import requireDescription from './rules/requireDescription.js';
4848
import requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';
49-
import requiredTags from './rules/requiredTags.js';
5049
import requireExample from './rules/requireExample.js';
5150
import requireFileOverview from './rules/requireFileOverview.js';
5251
import requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';
@@ -63,6 +62,7 @@ import requireReturns from './rules/requireReturns.js';
6362
import requireReturnsCheck from './rules/requireReturnsCheck.js';
6463
import requireReturnsDescription from './rules/requireReturnsDescription.js';
6564
import requireReturnsType from './rules/requireReturnsType.js';
65+
import requireTags from './rules/requireTags.js';
6666
import requireTemplate from './rules/requireTemplate.js';
6767
import requireThrows from './rules/requireThrows.js';
6868
import requireYields from './rules/requireYields.js';
@@ -185,6 +185,7 @@ index.rules = {
185185
'require-returns-check': requireReturnsCheck,
186186
'require-returns-description': requireReturnsDescription,
187187
'require-returns-type': requireReturnsType,
188+
'require-tags': requireTags,
188189
'require-template': requireTemplate,
189190
'require-throws': requireThrows,
190191
'require-throws-description': buildForbidRuleDefinition({
@@ -233,7 +234,6 @@ index.rules = {
233234
description: 'Requires a type for `@yields` tags',
234235
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',
235236
}),
236-
'required-tags': requiredTags,
237237
'sort-tags': sortTags,
238238
'tag-lines': tagLines,
239239
'text-escaping': textEscaping,
@@ -312,6 +312,7 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
312312
'jsdoc/require-returns-check': warnOrError,
313313
'jsdoc/require-returns-description': warnOrError,
314314
'jsdoc/require-returns-type': warnOrError,
315+
'jsdoc/require-tags': 'off',
315316
'jsdoc/require-template': 'off',
316317
'jsdoc/require-throws': 'off',
317318
'jsdoc/require-throws-description': 'off',
@@ -320,7 +321,6 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
320321
'jsdoc/require-yields-check': warnOrError,
321322
'jsdoc/require-yields-description': 'off',
322323
'jsdoc/require-yields-type': warnOrError,
323-
'jsdoc/required-tags': 'off',
324324
'jsdoc/sort-tags': 'off',
325325
'jsdoc/tag-lines': warnOrError,
326326
'jsdoc/text-escaping': 'off',

src/rules.d.ts

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2370,6 +2370,26 @@ export interface Rules {
23702370
}
23712371
];
23722372

2373+
/** Requires tags be present, optionally for specific contexts */
2374+
"jsdoc/require-tags":
2375+
| []
2376+
| [
2377+
{
2378+
/**
2379+
* May be an array of either strings or objects with
2380+
* a string `tag` property and `context` string property.
2381+
*/
2382+
tags?: (
2383+
| string
2384+
| {
2385+
context?: string;
2386+
tag?: string;
2387+
[k: string]: unknown;
2388+
}
2389+
)[];
2390+
}
2391+
];
2392+
23732393
/** Requires `@template` tags be present when type parameters are used. */
23742394
"jsdoc/require-template":
23752395
| []
@@ -2580,26 +2600,6 @@ export interface Rules {
25802600
/** Requires a type for `@yields` tags */
25812601
"jsdoc/require-yields-type": [];
25822602

2583-
/** Requires tags be present, optionally for specific contexts */
2584-
"jsdoc/required-tags":
2585-
| []
2586-
| [
2587-
{
2588-
/**
2589-
* May be an array of either strings or objects with
2590-
* a string `tag` property and `context` string property.
2591-
*/
2592-
tags?: (
2593-
| string
2594-
| {
2595-
context?: string;
2596-
tag?: string;
2597-
[k: string]: unknown;
2598-
}
2599-
)[];
2600-
}
2601-
];
2602-
26032603
/** Sorts tags by a specified sequence according to tag name, optionally adding line breaks between tag groups. */
26042604
"jsdoc/sort-tags":
26052605
| []

src/rules/requiredTags.js renamed to src/rules/requireTags.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export default buildForbidRuleDefinition({
77
getContexts (context, report) {
88
// Transformed options to this option in `modifyContext`:
99
if (!context.options[0].contexts) {
10-
report('Rule `required-tags` is missing a `tags` option.');
10+
report('Rule `require-tags` is missing a `tags` option.');
1111
return false;
1212
}
1313

@@ -81,5 +81,5 @@ a string \`tag\` property and \`context\` string property.`,
8181
type: 'object',
8282
},
8383
],
84-
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/required-tags.md#repos-sticky-header',
84+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-tags.md#repos-sticky-header',
8585
});

test/rules/assertions/requiredTags.js renamed to test/rules/assertions/requireTags.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export default {
7979
errors: [
8080
{
8181
line: 2,
82-
message: 'Rule `required-tags` is missing a `tags` option.',
82+
message: 'Rule `require-tags` is missing a `tags` option.',
8383
},
8484
],
8585
},

test/rules/ruleNames.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
"require-yields-check",
6161
"require-yields-description",
6262
"require-yields-type",
63-
"required-tags",
63+
"require-tags",
6464
"sort-tags",
6565
"tag-lines",
6666
"text-escaping",

0 commit comments

Comments
 (0)