eslint-plugin-jsdoc 50.6.16 → 50.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/alignTransform.cjs +10 -10
  2. package/dist/alignTransform.cjs.map +1 -1
  3. package/dist/exportParser.cjs +141 -135
  4. package/dist/exportParser.cjs.map +1 -1
  5. package/dist/generateRule.cjs +10 -12
  6. package/dist/generateRule.cjs.map +1 -1
  7. package/dist/getDefaultTagStructureForMode.cjs +73 -73
  8. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  9. package/dist/getJsdocProcessorPlugin.cjs +121 -110
  10. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  11. package/dist/index.cjs +17 -12
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.ts +4 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/iterateJsdoc.cjs +87 -66
  16. package/dist/iterateJsdoc.cjs.map +1 -1
  17. package/dist/jsdocUtils.cjs +144 -142
  18. package/dist/jsdocUtils.cjs.map +1 -1
  19. package/dist/rules/checkAlignment.cjs +2 -2
  20. package/dist/rules/checkAlignment.cjs.map +1 -1
  21. package/dist/rules/checkExamples.cjs +22 -28
  22. package/dist/rules/checkExamples.cjs.map +1 -1
  23. package/dist/rules/checkIndentation.cjs +2 -2
  24. package/dist/rules/checkIndentation.cjs.map +1 -1
  25. package/dist/rules/checkLineAlignment.cjs +14 -14
  26. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  27. package/dist/rules/checkParamNames.cjs +21 -15
  28. package/dist/rules/checkParamNames.cjs.map +1 -1
  29. package/dist/rules/checkPropertyNames.cjs +2 -2
  30. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  31. package/dist/rules/checkTagNames.cjs +11 -11
  32. package/dist/rules/checkTagNames.cjs.map +1 -1
  33. package/dist/rules/checkTemplateNames.cjs +21 -22
  34. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  35. package/dist/rules/checkTypes.cjs +10 -10
  36. package/dist/rules/checkTypes.cjs.map +1 -1
  37. package/dist/rules/checkValues.cjs +11 -14
  38. package/dist/rules/checkValues.cjs.map +1 -1
  39. package/dist/rules/convertToJsdocComments.cjs +26 -27
  40. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  41. package/dist/rules/emptyTags.cjs +6 -6
  42. package/dist/rules/emptyTags.cjs.map +1 -1
  43. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  44. package/dist/rules/informativeDocs.cjs +12 -12
  45. package/dist/rules/informativeDocs.cjs.map +1 -1
  46. package/dist/rules/linesBeforeBlock.cjs +12 -12
  47. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  48. package/dist/rules/matchDescription.cjs +1 -1
  49. package/dist/rules/matchDescription.cjs.map +1 -1
  50. package/dist/rules/matchName.cjs +4 -4
  51. package/dist/rules/matchName.cjs.map +1 -1
  52. package/dist/rules/multilineBlocks.cjs +10 -10
  53. package/dist/rules/multilineBlocks.cjs.map +1 -1
  54. package/dist/rules/noBadBlocks.cjs +3 -3
  55. package/dist/rules/noBadBlocks.cjs.map +1 -1
  56. package/dist/rules/noMultiAsterisks.cjs +6 -6
  57. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  58. package/dist/rules/noRestrictedSyntax.cjs +2 -2
  59. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  60. package/dist/rules/noTypes.cjs.map +1 -1
  61. package/dist/rules/noUndefinedTypes.cjs +17 -20
  62. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  63. package/dist/rules/requireAsteriskPrefix.cjs +4 -4
  64. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  65. package/dist/rules/requireDescription.cjs +2 -2
  66. package/dist/rules/requireDescription.cjs.map +1 -1
  67. package/dist/rules/requireDescriptionCompleteSentence.cjs +8 -8
  68. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  69. package/dist/rules/requireFileOverview.cjs +6 -6
  70. package/dist/rules/requireFileOverview.cjs.map +1 -1
  71. package/dist/rules/requireHyphenBeforeParamDescription.cjs +1 -4
  72. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  73. package/dist/rules/requireJsdoc.cjs +19 -19
  74. package/dist/rules/requireJsdoc.cjs.map +1 -1
  75. package/dist/rules/requireParam.cjs +12 -12
  76. package/dist/rules/requireParam.cjs.map +1 -1
  77. package/dist/rules/requireProperty.cjs +1 -1
  78. package/dist/rules/requireProperty.cjs.map +1 -1
  79. package/dist/rules/requireReturns.cjs +3 -3
  80. package/dist/rules/requireReturns.cjs.map +1 -1
  81. package/dist/rules/requireReturnsCheck.cjs +1 -1
  82. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  83. package/dist/rules/requireReturnsDescription.cjs +1 -1
  84. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  85. package/dist/rules/requireTemplate.cjs +16 -15
  86. package/dist/rules/requireTemplate.cjs.map +1 -1
  87. package/dist/rules/requireYields.cjs +4 -4
  88. package/dist/rules/requireYields.cjs.map +1 -1
  89. package/dist/rules/requireYieldsCheck.cjs +6 -6
  90. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  91. package/dist/rules/sortTags.cjs +13 -13
  92. package/dist/rules/sortTags.cjs.map +1 -1
  93. package/dist/rules/tagLines.cjs +11 -11
  94. package/dist/rules/tagLines.cjs.map +1 -1
  95. package/dist/rules/textEscaping.cjs +2 -2
  96. package/dist/rules/textEscaping.cjs.map +1 -1
  97. package/dist/rules/validTypes.cjs +15 -15
  98. package/dist/rules/validTypes.cjs.map +1 -1
  99. package/dist/tagNames.cjs +1 -1
  100. package/dist/tagNames.cjs.map +1 -1
  101. package/dist/utils/hasReturnValue.cjs +176 -176
  102. package/dist/utils/hasReturnValue.cjs.map +1 -1
  103. package/eslint.config.js +36 -32
  104. package/package.json +35 -35
  105. package/pnpm-workspace.yaml +1 -0
  106. package/src/alignTransform.js +15 -15
  107. package/src/exportParser.js +386 -373
  108. package/src/getDefaultTagStructureForMode.js +45 -45
  109. package/src/getJsdocProcessorPlugin.js +175 -128
  110. package/src/index.js +66 -37
  111. package/src/iterateJsdoc.js +61 -28
  112. package/src/jsdocUtils.js +354 -338
  113. package/src/rules/checkAlignment.js +2 -2
  114. package/src/rules/checkExamples.js +16 -20
  115. package/src/rules/checkIndentation.js +2 -2
  116. package/src/rules/checkLineAlignment.js +10 -10
  117. package/src/rules/checkParamNames.js +22 -14
  118. package/src/rules/checkPropertyNames.js +1 -1
  119. package/src/rules/checkTagNames.js +7 -7
  120. package/src/rules/checkTemplateNames.js +52 -38
  121. package/src/rules/checkTypes.js +7 -7
  122. package/src/rules/checkValues.js +16 -17
  123. package/src/rules/convertToJsdocComments.js +47 -37
  124. package/src/rules/emptyTags.js +14 -7
  125. package/src/rules/importsAsDependencies.js +3 -1
  126. package/src/rules/informativeDocs.js +58 -58
  127. package/src/rules/linesBeforeBlock.js +25 -17
  128. package/src/rules/matchDescription.js +1 -1
  129. package/src/rules/matchName.js +2 -2
  130. package/src/rules/multilineBlocks.js +10 -10
  131. package/src/rules/noBadBlocks.js +3 -3
  132. package/src/rules/noMultiAsterisks.js +4 -4
  133. package/src/rules/noRestrictedSyntax.js +1 -1
  134. package/src/rules/noTypes.js +1 -1
  135. package/src/rules/noUndefinedTypes.js +29 -23
  136. package/src/rules/requireAsteriskPrefix.js +3 -3
  137. package/src/rules/requireDescription.js +1 -1
  138. package/src/rules/requireDescriptionCompleteSentence.js +6 -6
  139. package/src/rules/requireFileOverview.js +3 -3
  140. package/src/rules/requireHyphenBeforeParamDescription.js +2 -5
  141. package/src/rules/requireJsdoc.js +14 -14
  142. package/src/rules/requireParam.js +9 -9
  143. package/src/rules/requireProperty.js +1 -1
  144. package/src/rules/requireReturns.js +1 -1
  145. package/src/rules/requireReturnsCheck.js +1 -1
  146. package/src/rules/requireReturnsDescription.js +1 -1
  147. package/src/rules/requireTemplate.js +59 -38
  148. package/src/rules/requireYields.js +3 -3
  149. package/src/rules/requireYieldsCheck.js +1 -1
  150. package/src/rules/sortTags.js +7 -7
  151. package/src/rules/tagLines.js +8 -8
  152. package/src/rules/textEscaping.js +2 -0
  153. package/src/rules/validTypes.js +29 -29
  154. package/src/tagNames.js +2 -2
  155. package/src/utils/hasReturnValue.js +298 -283
@@ -19,11 +19,11 @@ export default iterateJsdoc(({
19
19
  * reportIntraTagGroupSpacing: boolean,
20
20
  * }}
21
21
  */ {
22
- linesBetween = 1,
23
- tagSequence = defaultTagOrder,
24
22
  alphabetizeExtras = false,
25
- reportTagGroupSpacing = true,
23
+ linesBetween = 1,
26
24
  reportIntraTagGroupSpacing = true,
25
+ reportTagGroupSpacing = true,
26
+ tagSequence = defaultTagOrder,
27
27
  } = context.options[0] || {};
28
28
 
29
29
  const tagList = tagSequence.flatMap((obj) => {
@@ -142,10 +142,10 @@ export default iterateJsdoc(({
142
142
  return tag.source.reduce((acc, {
143
143
  tokens: {
144
144
  description,
145
- name,
146
- type,
147
145
  end,
146
+ name,
148
147
  tag: tg,
148
+ type,
149
149
  },
150
150
  }) => {
151
151
  const empty = !tg && !type && !name && !description;
@@ -342,10 +342,10 @@ export default iterateJsdoc(({
342
342
  {
343
343
  tokens: {
344
344
  description,
345
- name,
346
- type,
347
345
  end,
346
+ name,
348
347
  tag: tg,
348
+ type,
349
349
  },
350
350
  },
351
351
  ] of jsdoc.source.entries()) {
@@ -8,10 +8,10 @@ export default iterateJsdoc(({
8
8
  const [
9
9
  alwaysNever = 'never',
10
10
  {
11
+ applyToEndTag = true,
11
12
  count = 1,
12
13
  endLines = 0,
13
14
  startLines = 0,
14
- applyToEndTag = true,
15
15
  tags = {},
16
16
  } = {},
17
17
  ] = context.options;
@@ -34,11 +34,11 @@ export default iterateJsdoc(({
34
34
  idx,
35
35
  {
36
36
  tokens: {
37
- tag,
38
- name,
39
- type,
40
37
  description,
41
38
  end,
39
+ name,
40
+ tag,
41
+ type,
42
42
  },
43
43
  },
44
44
  ] of tg.source.entries()) {
@@ -48,7 +48,7 @@ export default iterateJsdoc(({
48
48
  }
49
49
 
50
50
  if (lastTag && [
51
- 'any', 'always',
51
+ 'always', 'any',
52
52
  ].includes(tags[lastTag.slice(1)]?.lines)) {
53
53
  continue;
54
54
  }
@@ -160,11 +160,11 @@ export default iterateJsdoc(({
160
160
  {
161
161
  number,
162
162
  tokens: {
163
- tag,
164
- name,
165
- type,
166
163
  description,
167
164
  end,
165
+ name,
166
+ tag,
167
+ type,
168
168
  },
169
169
  },
170
170
  ] of tg.source.entries()) {
@@ -76,6 +76,7 @@ export default iterateJsdoc(({
76
76
  if (tag.tag === 'example') {
77
77
  continue;
78
78
  }
79
+
79
80
  if (/** @type {string[]} */ (
80
81
  utils.getTagDescription(tag, true)
81
82
  ).some((desc) => {
@@ -106,6 +107,7 @@ export default iterateJsdoc(({
106
107
  if (tag.tag === 'example') {
107
108
  continue;
108
109
  }
110
+
109
111
  if (/** @type {string[]} */ (
110
112
  utils.getTagDescription(tag, true)
111
113
  ).some((desc) => {
@@ -11,10 +11,10 @@ const inlineTags = new Set([
11
11
  ]);
12
12
 
13
13
  const jsdocTypePrattKeywords = new Set([
14
- 'typeof',
15
- 'readonly',
16
14
  'import',
17
15
  'is',
16
+ 'readonly',
17
+ 'typeof',
18
18
  ]);
19
19
 
20
20
  const asExpression = /as\s+/u;
@@ -79,8 +79,8 @@ const suppressTypes = new Set([
79
79
 
80
80
  // Not documented?
81
81
  'unusedPrivateMembers',
82
- 'useOfGoogProvide',
83
82
  'uselessCode',
83
+ 'useOfGoogProvide',
84
84
  'visibility',
85
85
  'with',
86
86
  ]);
@@ -103,11 +103,11 @@ const tryParsePathIgnoreError = (path) => {
103
103
 
104
104
  // eslint-disable-next-line complexity
105
105
  export default iterateJsdoc(({
106
+ context,
106
107
  jsdoc,
107
108
  report,
108
- utils,
109
- context,
110
109
  settings,
110
+ utils,
111
111
  }) => {
112
112
  const {
113
113
  allowEmptyNamepaths = false,
@@ -134,35 +134,35 @@ export default iterateJsdoc(({
134
134
 
135
135
  if (tagName) {
136
136
  switch (tagName) {
137
- case 'requires':
138
- case 'module': {
139
- if (!namepath.startsWith('module:')) {
140
- handled = tryParsePathIgnoreError(`module:${namepath}`);
137
+ case 'memberof':
138
+ case 'memberof!': {
139
+ const endChar = namepath.slice(-1);
140
+ if ([
141
+ '#', '.', '~',
142
+ ].includes(endChar)) {
143
+ handled = tryParsePathIgnoreError(namepath.slice(0, -1));
144
+ }
145
+
146
+ break;
141
147
  }
142
148
 
143
- break;
144
- }
149
+ case 'module': case 'requires': {
150
+ if (!namepath.startsWith('module:')) {
151
+ handled = tryParsePathIgnoreError(`module:${namepath}`);
152
+ }
145
153
 
146
- case 'memberof': case 'memberof!': {
147
- const endChar = namepath.slice(-1);
148
- if ([
149
- '#', '.', '~',
150
- ].includes(endChar)) {
151
- handled = tryParsePathIgnoreError(namepath.slice(0, -1));
154
+ break;
152
155
  }
153
156
 
154
- break;
155
- }
156
-
157
- case 'borrows': {
158
- const startChar = namepath.charAt(0);
159
- if ([
160
- '#', '.', '~',
161
- ].includes(startChar)) {
162
- handled = tryParsePathIgnoreError(namepath.slice(1));
157
+ case 'borrows': {
158
+ const startChar = namepath.charAt(0);
159
+ if ([
160
+ '#', '.', '~',
161
+ ].includes(startChar)) {
162
+ handled = tryParsePathIgnoreError(namepath.slice(1));
163
+ }
163
164
  }
164
165
  }
165
- }
166
166
  }
167
167
 
168
168
  if (!handled) {
@@ -314,8 +314,8 @@ export default iterateJsdoc(({
314
314
  // `require-param-name` (`@property` would similarly seem to require one,
315
315
  // but is handled by `require-property-name`)
316
316
  if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![
317
- 'param', 'arg', 'argument',
318
- 'property', 'prop',
317
+ 'arg', 'argument', 'param',
318
+ 'prop', 'property',
319
319
  ].includes(tag.tag) &&
320
320
  (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))
321
321
  ) {
package/src/tagNames.js CHANGED
@@ -179,10 +179,10 @@ const {
179
179
  inheritdoc,
180
180
  internal,
181
181
  overload,
182
- satisfies,
183
-
184
182
  // Will be inverted to prefer `return`
185
183
  returns,
184
+
185
+ satisfies,
186
186
  /* eslint-enable no-unused-vars */
187
187
  ...typeScriptTagsInClosure
188
188
  } = typeScriptTags;