eslint-plugin-jsdoc 58.1.0 → 59.0.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 (184) hide show
  1. package/README.md +66 -60
  2. package/dist/buildForbidRuleDefinition.cjs +0 -1
  3. package/dist/buildForbidRuleDefinition.cjs.map +1 -1
  4. package/dist/buildRejectOrPreferRuleDefinition.cjs +7 -2
  5. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
  6. package/dist/cjs/rules/convertToJsdocComments.d.ts +7 -0
  7. package/dist/generateDocs.cjs +129 -3
  8. package/dist/generateDocs.cjs.map +1 -1
  9. package/dist/generateRule.cjs +3 -1
  10. package/dist/generateRule.cjs.map +1 -1
  11. package/dist/generateRuleTypes.cjs +5 -5
  12. package/dist/generateRuleTypes.cjs.map +1 -1
  13. package/dist/index-cjs.cjs +30 -0
  14. package/dist/index-cjs.cjs.map +1 -1
  15. package/dist/index.cjs +30 -0
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/rules/checkAccess.cjs +1 -1
  18. package/dist/rules/checkAccess.cjs.map +1 -1
  19. package/dist/rules/checkAlignment.cjs +4 -1
  20. package/dist/rules/checkAlignment.cjs.map +1 -1
  21. package/dist/rules/checkExamples.cjs +1 -1
  22. package/dist/rules/checkExamples.cjs.map +1 -1
  23. package/dist/rules/checkIndentation.cjs +19 -0
  24. package/dist/rules/checkIndentation.cjs.map +1 -1
  25. package/dist/rules/checkLineAlignment.cjs +25 -1
  26. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  27. package/dist/rules/checkParamNames.cjs +62 -1
  28. package/dist/rules/checkParamNames.cjs.map +1 -1
  29. package/dist/rules/checkPropertyNames.cjs +6 -0
  30. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  31. package/dist/rules/checkTagNames.cjs +71 -0
  32. package/dist/rules/checkTagNames.cjs.map +1 -1
  33. package/dist/rules/checkTypes.cjs +16 -1
  34. package/dist/rules/checkTypes.cjs.map +1 -1
  35. package/dist/rules/checkValues.cjs +17 -1
  36. package/dist/rules/checkValues.cjs.map +1 -1
  37. package/dist/rules/convertToJsdocComments.cjs +48 -0
  38. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  39. package/dist/rules/convertToJsdocComments.d.ts +7 -0
  40. package/dist/rules/emptyTags.cjs +10 -1
  41. package/dist/rules/emptyTags.cjs.map +1 -1
  42. package/dist/rules/implementsOnClasses.cjs +15 -1
  43. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  44. package/dist/rules/informativeDocs.cjs +45 -0
  45. package/dist/rules/informativeDocs.cjs.map +1 -1
  46. package/dist/rules/linesBeforeBlock.cjs +14 -0
  47. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  48. package/dist/rules/matchDescription.cjs +129 -0
  49. package/dist/rules/matchDescription.cjs.map +1 -1
  50. package/dist/rules/matchName.cjs +30 -0
  51. package/dist/rules/matchName.cjs.map +1 -1
  52. package/dist/rules/multilineBlocks.cjs +78 -6
  53. package/dist/rules/multilineBlocks.cjs.map +1 -1
  54. package/dist/rules/noBadBlocks.cjs +11 -2
  55. package/dist/rules/noBadBlocks.cjs.map +1 -1
  56. package/dist/rules/noBlankBlockDescriptions.cjs +1 -1
  57. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  58. package/dist/rules/noBlankBlocks.cjs +3 -1
  59. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  60. package/dist/rules/noDefaults.cjs +19 -0
  61. package/dist/rules/noDefaults.cjs.map +1 -1
  62. package/dist/rules/noMissingSyntax.cjs +22 -2
  63. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  64. package/dist/rules/noMultiAsterisks.cjs +29 -0
  65. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  66. package/dist/rules/noRestrictedSyntax.cjs +17 -1
  67. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  68. package/dist/rules/noTypes.cjs +17 -1
  69. package/dist/rules/noTypes.cjs.map +1 -1
  70. package/dist/rules/noUndefinedTypes.cjs +11 -1
  71. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  72. package/dist/rules/requireAsteriskPrefix.cjs +28 -0
  73. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  74. package/dist/rules/requireDescription.cjs +30 -1
  75. package/dist/rules/requireDescription.cjs.map +1 -1
  76. package/dist/rules/requireDescriptionCompleteSentence.cjs +27 -0
  77. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  78. package/dist/rules/requireExample.cjs +26 -1
  79. package/dist/rules/requireExample.cjs.map +1 -1
  80. package/dist/rules/requireFileOverview.cjs +61 -0
  81. package/dist/rules/requireFileOverview.cjs.map +1 -1
  82. package/dist/rules/requireHyphenBeforeParamDescription.cjs +20 -2
  83. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  84. package/dist/rules/requireJsdoc.cjs +82 -3
  85. package/dist/rules/requireJsdoc.cjs.map +1 -1
  86. package/dist/rules/requireParam.cjs +213 -1
  87. package/dist/rules/requireParam.cjs.map +1 -1
  88. package/dist/rules/requireParamDescription.cjs +21 -0
  89. package/dist/rules/requireParamDescription.cjs.map +1 -1
  90. package/dist/rules/requireParamName.cjs +16 -1
  91. package/dist/rules/requireParamName.cjs.map +1 -1
  92. package/dist/rules/requireParamType.cjs +21 -1
  93. package/dist/rules/requireParamType.cjs.map +1 -1
  94. package/dist/rules/requirePropertyName.cjs +1 -1
  95. package/dist/rules/requirePropertyName.cjs.map +1 -1
  96. package/dist/rules/requirePropertyType.cjs +1 -1
  97. package/dist/rules/requirePropertyType.cjs.map +1 -1
  98. package/dist/rules/requireReturns.cjs +54 -1
  99. package/dist/rules/requireReturns.cjs.map +1 -1
  100. package/dist/rules/requireReturnsCheck.cjs +22 -1
  101. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  102. package/dist/rules/requireReturnsDescription.cjs +15 -1
  103. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  104. package/dist/rules/requireReturnsType.cjs +15 -1
  105. package/dist/rules/requireReturnsType.cjs.map +1 -1
  106. package/dist/rules/requireTemplate.cjs +17 -1
  107. package/dist/rules/requireTemplate.cjs.map +1 -1
  108. package/dist/rules/requireThrows.cjs +18 -1
  109. package/dist/rules/requireThrows.cjs.map +1 -1
  110. package/dist/rules/requireYields.cjs +50 -1
  111. package/dist/rules/requireYields.cjs.map +1 -1
  112. package/dist/rules/requireYieldsCheck.cjs +25 -7
  113. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  114. package/dist/rules/sortTags.cjs +200 -1
  115. package/dist/rules/sortTags.cjs.map +1 -1
  116. package/dist/rules/tagLines.cjs +32 -2
  117. package/dist/rules/tagLines.cjs.map +1 -1
  118. package/dist/rules/textEscaping.cjs +5 -1
  119. package/dist/rules/textEscaping.cjs.map +1 -1
  120. package/dist/rules/typeFormatting.cjs +64 -16
  121. package/dist/rules/typeFormatting.cjs.map +1 -1
  122. package/dist/rules/validTypes.cjs +8 -1
  123. package/dist/rules/validTypes.cjs.map +1 -1
  124. package/dist/rules.d.ts +2130 -32
  125. package/package.json +1 -1
  126. package/src/buildForbidRuleDefinition.js +0 -1
  127. package/src/buildRejectOrPreferRuleDefinition.js +12 -2
  128. package/src/index-cjs.js +36 -0
  129. package/src/index.js +36 -0
  130. package/src/rules/checkAccess.js +1 -1
  131. package/src/rules/checkAlignment.js +3 -0
  132. package/src/rules/checkExamples.js +1 -1
  133. package/src/rules/checkIndentation.js +19 -0
  134. package/src/rules/checkLineAlignment.js +24 -0
  135. package/src/rules/checkParamNames.js +62 -1
  136. package/src/rules/checkPropertyNames.js +6 -0
  137. package/src/rules/checkTagNames.js +71 -0
  138. package/src/rules/checkTypes.js +16 -1
  139. package/src/rules/checkValues.js +16 -0
  140. package/src/rules/convertToJsdocComments.js +48 -0
  141. package/src/rules/emptyTags.js +10 -1
  142. package/src/rules/implementsOnClasses.js +15 -1
  143. package/src/rules/informativeDocs.js +45 -0
  144. package/src/rules/linesBeforeBlock.js +14 -0
  145. package/src/rules/matchDescription.js +129 -0
  146. package/src/rules/matchName.js +30 -0
  147. package/src/rules/multilineBlocks.js +77 -5
  148. package/src/rules/noBadBlocks.js +11 -2
  149. package/src/rules/noBlankBlockDescriptions.js +1 -1
  150. package/src/rules/noBlankBlocks.js +2 -0
  151. package/src/rules/noDefaults.js +19 -0
  152. package/src/rules/noMissingSyntax.js +22 -2
  153. package/src/rules/noMultiAsterisks.js +29 -0
  154. package/src/rules/noRestrictedSyntax.js +17 -1
  155. package/src/rules/noTypes.js +17 -1
  156. package/src/rules/noUndefinedTypes.js +11 -1
  157. package/src/rules/requireAsteriskPrefix.js +28 -0
  158. package/src/rules/requireDescription.js +30 -1
  159. package/src/rules/requireDescriptionCompleteSentence.js +27 -0
  160. package/src/rules/requireExample.js +26 -1
  161. package/src/rules/requireFileOverview.js +61 -0
  162. package/src/rules/requireHyphenBeforeParamDescription.js +19 -1
  163. package/src/rules/requireJsdoc.js +80 -1
  164. package/src/rules/requireParam.js +213 -1
  165. package/src/rules/requireParamDescription.js +21 -0
  166. package/src/rules/requireParamName.js +16 -1
  167. package/src/rules/requireParamType.js +21 -1
  168. package/src/rules/requirePropertyName.js +1 -1
  169. package/src/rules/requirePropertyType.js +1 -1
  170. package/src/rules/requireReturns.js +54 -1
  171. package/src/rules/requireReturnsCheck.js +22 -1
  172. package/src/rules/requireReturnsDescription.js +15 -1
  173. package/src/rules/requireReturnsType.js +15 -1
  174. package/src/rules/requireTemplate.js +17 -1
  175. package/src/rules/requireThrows.js +18 -1
  176. package/src/rules/requireYields.js +50 -1
  177. package/src/rules/requireYieldsCheck.js +25 -7
  178. package/src/rules/sortTags.js +200 -1
  179. package/src/rules/tagLines.js +30 -0
  180. package/src/rules/textEscaping.js +5 -1
  181. package/src/rules/typeFormatting.js +57 -19
  182. package/src/rules/validTypes.js +8 -1
  183. package/src/rules.d.ts +2130 -32
  184. package/typings/gitdown.d.ts +4 -0
@@ -296,6 +296,11 @@ export default iterateJsdoc(({
296
296
  fixable: 'code',
297
297
  schema: [
298
298
  {
299
+ description: `Defaults to "never". "any" is only useful with \`tags\` (allowing non-enforcement of lines except
300
+ for particular tags) or with \`startLines\` or \`endLines\`. It is also
301
+ necessary if using the linebreak-setting options of the \`sort-tags\` rule
302
+ so that the two rules won't conflict in both attempting to set lines
303
+ between tags.`,
299
304
  enum: [
300
305
  'always', 'any', 'never',
301
306
  ],
@@ -305,9 +310,16 @@ export default iterateJsdoc(({
305
310
  additionalProperties: false,
306
311
  properties: {
307
312
  applyToEndTag: {
313
+ description: `Set to \`false\` and use with "always" to indicate the normal lines to be
314
+ added after tags should not be added after the final tag.
315
+
316
+ Defaults to \`true\`.`,
308
317
  type: 'boolean',
309
318
  },
310
319
  count: {
320
+ description: `Use with "always" to indicate the number of lines to require be present.
321
+
322
+ Defaults to 1.`,
311
323
  type: 'integer',
312
324
  },
313
325
  endLines: {
@@ -319,6 +331,10 @@ export default iterateJsdoc(({
319
331
  type: 'null',
320
332
  },
321
333
  ],
334
+ description: `If not set to \`null\`, will enforce end lines to the given count on the
335
+ final tag only.
336
+
337
+ Defaults to \`0\`.`,
322
338
  },
323
339
  startLines: {
324
340
  anyOf: [
@@ -329,8 +345,22 @@ export default iterateJsdoc(({
329
345
  type: 'null',
330
346
  },
331
347
  ],
348
+ description: `If not set to \`null\`, will enforce end lines to the given count before the
349
+ first tag only, unless there is only whitespace content, in which case,
350
+ a line count will not be enforced.
351
+
352
+ Defaults to \`0\`.`,
332
353
  },
333
354
  tags: {
355
+ description: `Overrides the default behavior depending on specific tags.
356
+
357
+ An object whose keys are tag names and whose values are objects with the
358
+ following keys:
359
+
360
+ 1. \`lines\` - Set to \`always\`, \`never\`, or \`any\` to override.
361
+ 2. \`count\` - Overrides main \`count\` (for "always")
362
+
363
+ Defaults to empty object.`,
334
364
  patternProperties: {
335
365
  '.*': {
336
366
  additionalProperties: false,
@@ -138,11 +138,15 @@ export default iterateJsdoc(({
138
138
  {
139
139
  additionalProperties: false,
140
140
  properties: {
141
- // Option properties here (or remove the object)
142
141
  escapeHTML: {
142
+ description: `This option escapes all \`<\` and \`&\` characters (except those followed by
143
+ whitespace which are treated as literals by Visual Studio Code). Defaults to
144
+ \`false\`.`,
143
145
  type: 'boolean',
144
146
  },
145
147
  escapeMarkdown: {
148
+ description: `This option escapes the first backtick (\`\` \` \`\`) in a paired sequence.
149
+ Defaults to \`false\`.`,
146
150
  type: 'boolean',
147
151
  },
148
152
  },
@@ -24,7 +24,7 @@ export default iterateJsdoc(({
24
24
  objectFieldSeparator = 'comma',
25
25
  objectFieldSeparatorOptionalLinebreak = true,
26
26
  objectFieldSeparatorTrailingPunctuation = false,
27
- propertyQuotes = null,
27
+ // propertyQuotes = null,
28
28
  separatorForSingleObjectField = false,
29
29
  stringQuotes = 'single',
30
30
  typeBracketSpacing = '',
@@ -277,19 +277,20 @@ export default iterateJsdoc(({
277
277
  break;
278
278
  }
279
279
 
280
- case 'JsdocTypeProperty': {
281
- const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);
280
+ // Only suitable for namepaths (and would need changes); see https://github.com/gajus/eslint-plugin-jsdoc/issues/1524
281
+ // case 'JsdocTypeProperty': {
282
+ // const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);
282
283
 
283
- if ((propertyQuotes ||
284
- (typeof typeNode.value === 'string' && !(/\s/v).test(typeNode.value))) &&
285
- typeNode.meta.quote !== (propertyQuotes ?? undefined)
286
- ) {
287
- typeNode.meta.quote = propertyQuotes ?? undefined;
288
- errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;
289
- }
284
+ // if ((propertyQuotes ||
285
+ // (typeof typeNode.value === 'string' && !(/\s/v).test(typeNode.value))) &&
286
+ // typeNode.meta.quote !== (propertyQuotes ?? undefined)
287
+ // ) {
288
+ // typeNode.meta.quote = propertyQuotes ?? undefined;
289
+ // errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;
290
+ // }
290
291
 
291
- break;
292
- }
292
+ // break;
293
+ // }
293
294
 
294
295
  case 'JsdocTypeStringValue': {
295
296
  const typeNode = /** @type {import('jsdoc-type-pratt-parser').StringValueResult} */ (nde);
@@ -369,21 +370,31 @@ export default iterateJsdoc(({
369
370
  additionalProperties: false,
370
371
  properties: {
371
372
  arrayBrackets: {
373
+ description: 'Determines how array generics are represented. Set to `angle` for the style `Array<type>` or `square` for the style `type[]`. Defaults to "square".',
372
374
  enum: [
373
375
  'angle',
374
376
  'square',
375
377
  ],
378
+ type: 'string',
376
379
  },
377
380
  enableFixer: {
381
+ description: 'Whether to enable the fixer. Defaults to `true`.',
378
382
  type: 'boolean',
379
383
  },
380
384
  genericDot: {
385
+ description: 'Boolean value of whether to use a dot before the angled brackets of a generic (e.g., `SomeType.<AnotherType>`). Defaults to `false`.',
381
386
  type: 'boolean',
382
387
  },
383
388
  objectFieldIndent: {
389
+ description: `A string indicating the whitespace to be added on each line preceding an
390
+ object property-value field. Defaults to the empty string.`,
384
391
  type: 'string',
385
392
  },
386
393
  objectFieldQuote: {
394
+ description: `Whether and how object field properties should be quoted (e.g., \`{"a": string}\`).
395
+ Set to \`single\`, \`double\`, or \`null\`. Defaults to \`null\` (no quotes unless
396
+ required due to special characters within the field). Digits will be kept as is,
397
+ regardless of setting (they can either represent a digit or a string digit).`,
387
398
  enum: [
388
399
  'double',
389
400
  'single',
@@ -391,6 +402,11 @@ export default iterateJsdoc(({
391
402
  ],
392
403
  },
393
404
  objectFieldSeparator: {
405
+ description: `For object properties, specify whether a "semicolon", "comma", "linebreak",
406
+ "semicolon-and-linebreak", or "comma-and-linebreak" should be used after
407
+ each object property-value pair.
408
+
409
+ Defaults to \`"comma"\`.`,
394
410
  enum: [
395
411
  'comma',
396
412
  'comma-and-linebreak',
@@ -398,33 +414,55 @@ export default iterateJsdoc(({
398
414
  'semicolon',
399
415
  'semicolon-and-linebreak',
400
416
  ],
417
+ type: 'string',
401
418
  },
402
419
  objectFieldSeparatorOptionalLinebreak: {
420
+ description: `Whether \`objectFieldSeparator\` set to \`"semicolon-and-linebreak"\` or
421
+ \`"comma-and-linebreak"\` should be allowed to optionally drop the linebreak.
422
+
423
+ Defaults to \`true\`.`,
403
424
  type: 'boolean',
404
425
  },
405
426
  objectFieldSeparatorTrailingPunctuation: {
427
+ description: `If \`separatorForSingleObjectField\` is not in effect (i.e., if it is \`false\`
428
+ or there are multiple property-value object fields present), this property
429
+ will determine whether to add punctuation corresponding to the
430
+ \`objectFieldSeparator\` (e.g., a semicolon) to the final object field.
431
+ Defaults to \`false\`.`,
406
432
  type: 'boolean',
407
433
  },
408
- propertyQuotes: {
409
- enum: [
410
- 'double',
411
- 'single',
412
- null,
413
- ],
414
- },
434
+ // propertyQuotes: {
435
+ // description: `Whether and how namepath properties should be quoted (e.g., \`ab."cd"."ef"\`).
436
+ // Set to \`single\`, \`double\`, or \`null\`. Defaults to \`null\` (no quotes unless
437
+ // required due to whitespace within the property).`,
438
+ // enum: [
439
+ // 'double',
440
+ // 'single',
441
+ // null,
442
+ // ],
443
+ // },
415
444
  separatorForSingleObjectField: {
445
+ description: `Whether to apply the \`objectFieldSeparator\` (e.g., a semicolon) when there
446
+ is only one property-value object field present. Defaults to \`false\`.`,
416
447
  type: 'boolean',
417
448
  },
418
449
  stringQuotes: {
450
+ description: `How string literals should be quoted (e.g., \`"abc"\`). Set to \`single\`
451
+ or \`double\`. Defaults to 'single'.`,
419
452
  enum: [
420
453
  'double',
421
454
  'single',
422
455
  ],
456
+ type: 'string',
423
457
  },
424
458
  typeBracketSpacing: {
459
+ description: `A string of spaces that will be added immediately after the type's initial
460
+ curly bracket and immediately before its ending curly bracket. Defaults
461
+ to the empty string.`,
425
462
  type: 'string',
426
463
  },
427
464
  unionSpacing: {
465
+ description: 'Determines the spacing to add to unions (`|`). Defaults to a single space (`" "`).',
428
466
  type: 'string',
429
467
  },
430
468
  },
@@ -392,7 +392,7 @@ export default iterateJsdoc(({
392
392
  iterateAllJsdocs: true,
393
393
  meta: {
394
394
  docs: {
395
- description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',
395
+ description: 'Requires all types/namepaths to be valid JSDoc, Closure compiler, or TypeScript types (configurable in settings).',
396
396
  url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/valid-types.md#repos-sticky-header',
397
397
  },
398
398
  schema: [
@@ -401,6 +401,13 @@ export default iterateJsdoc(({
401
401
  properties: {
402
402
  allowEmptyNamepaths: {
403
403
  default: false,
404
+ description: `Set to \`false\` to bulk disallow
405
+ empty name paths with namepath groups 2 and 4 (these might often be
406
+ expected to have an accompanying name path, though they have some
407
+ indicative value without one; these may also allow names to be defined
408
+ in another manner elsewhere in the block); you can use
409
+ \`settings.jsdoc.structuredTags\` with the \`required\` key set to "name" if you
410
+ wish to require name paths on a tag-by-tag basis. Defaults to \`true\`.`,
404
411
  type: 'boolean',
405
412
  },
406
413
  },