@depup/eslint-plugin-jsdoc 62.8.0-depup.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 (430) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +33 -0
  3. package/changes.json +18 -0
  4. package/dist/WarnSettings.cjs +38 -0
  5. package/dist/WarnSettings.cjs.map +1 -0
  6. package/dist/WarnSettings.d.ts +17 -0
  7. package/dist/alignTransform.cjs +402 -0
  8. package/dist/alignTransform.cjs.map +1 -0
  9. package/dist/alignTransform.d.ts +34 -0
  10. package/dist/buildForbidRuleDefinition.cjs +101 -0
  11. package/dist/buildForbidRuleDefinition.cjs.map +1 -0
  12. package/dist/buildForbidRuleDefinition.d.ts +15 -0
  13. package/dist/buildRejectOrPreferRuleDefinition.cjs +352 -0
  14. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -0
  15. package/dist/buildRejectOrPreferRuleDefinition.d.ts +9 -0
  16. package/dist/cjs/WarnSettings.d.ts +16 -0
  17. package/dist/cjs/alignTransform.d.ts +33 -0
  18. package/dist/cjs/buildForbidRuleDefinition.d.ts +14 -0
  19. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +8 -0
  20. package/dist/cjs/defaultTagOrder.d.ts +4 -0
  21. package/dist/cjs/exportParser.d.ts +40 -0
  22. package/dist/cjs/getDefaultTagStructureForMode.d.ts +10 -0
  23. package/dist/cjs/getJsdocProcessorPlugin.d.cts +5 -0
  24. package/dist/cjs/getJsdocProcessorPlugin.d.ts +66 -0
  25. package/dist/cjs/index-cjs.d.ts +23 -0
  26. package/dist/cjs/index.cjs.d.cts +2 -0
  27. package/dist/cjs/iterateJsdoc.d.cts +7 -0
  28. package/dist/cjs/iterateJsdoc.d.ts +495 -0
  29. package/dist/cjs/jsdocUtils.d.ts +493 -0
  30. package/dist/cjs/rules/checkAccess.d.ts +2 -0
  31. package/dist/cjs/rules/checkAlignment.d.ts +2 -0
  32. package/dist/cjs/rules/checkExamples.d.ts +3 -0
  33. package/dist/cjs/rules/checkIndentation.d.ts +2 -0
  34. package/dist/cjs/rules/checkLineAlignment.d.ts +9 -0
  35. package/dist/cjs/rules/checkParamNames.d.ts +2 -0
  36. package/dist/cjs/rules/checkPropertyNames.d.ts +2 -0
  37. package/dist/cjs/rules/checkSyntax.d.ts +2 -0
  38. package/dist/cjs/rules/checkTagNames.d.ts +2 -0
  39. package/dist/cjs/rules/checkTemplateNames.d.ts +2 -0
  40. package/dist/cjs/rules/checkTypes.d.ts +7 -0
  41. package/dist/cjs/rules/checkValues.d.ts +2 -0
  42. package/dist/cjs/rules/convertToJsdocComments.d.ts +266 -0
  43. package/dist/cjs/rules/emptyTags.d.ts +2 -0
  44. package/dist/cjs/rules/escapeInlineTags.d.ts +2 -0
  45. package/dist/cjs/rules/implementsOnClasses.d.ts +2 -0
  46. package/dist/cjs/rules/importsAsDependencies.d.ts +2 -0
  47. package/dist/cjs/rules/informativeDocs.d.ts +2 -0
  48. package/dist/cjs/rules/linesBeforeBlock.d.ts +2 -0
  49. package/dist/cjs/rules/matchDescription.d.ts +2 -0
  50. package/dist/cjs/rules/matchName.d.ts +2 -0
  51. package/dist/cjs/rules/multilineBlocks.d.ts +2 -0
  52. package/dist/cjs/rules/noBadBlocks.d.ts +2 -0
  53. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +2 -0
  54. package/dist/cjs/rules/noBlankBlocks.d.ts +2 -0
  55. package/dist/cjs/rules/noDefaults.d.ts +2 -0
  56. package/dist/cjs/rules/noMissingSyntax.d.ts +9 -0
  57. package/dist/cjs/rules/noMultiAsterisks.d.ts +2 -0
  58. package/dist/cjs/rules/noRestrictedSyntax.d.ts +2 -0
  59. package/dist/cjs/rules/noTypes.d.ts +2 -0
  60. package/dist/cjs/rules/noUndefinedTypes.d.ts +2 -0
  61. package/dist/cjs/rules/preferImportTag.d.ts +2 -0
  62. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +2 -0
  63. package/dist/cjs/rules/requireDescription.d.ts +2 -0
  64. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +2 -0
  65. package/dist/cjs/rules/requireExample.d.ts +2 -0
  66. package/dist/cjs/rules/requireFileOverview.d.ts +2 -0
  67. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +2 -0
  68. package/dist/cjs/rules/requireJsdoc.d.ts +24 -0
  69. package/dist/cjs/rules/requireParam.d.ts +3 -0
  70. package/dist/cjs/rules/requireParamDescription.d.ts +2 -0
  71. package/dist/cjs/rules/requireParamName.d.ts +2 -0
  72. package/dist/cjs/rules/requireParamType.d.ts +2 -0
  73. package/dist/cjs/rules/requireProperty.d.ts +2 -0
  74. package/dist/cjs/rules/requirePropertyDescription.d.ts +2 -0
  75. package/dist/cjs/rules/requirePropertyName.d.ts +2 -0
  76. package/dist/cjs/rules/requirePropertyType.d.ts +2 -0
  77. package/dist/cjs/rules/requireRejects.d.ts +2 -0
  78. package/dist/cjs/rules/requireReturns.d.ts +2 -0
  79. package/dist/cjs/rules/requireReturnsCheck.d.ts +2 -0
  80. package/dist/cjs/rules/requireReturnsDescription.d.ts +2 -0
  81. package/dist/cjs/rules/requireReturnsType.d.ts +2 -0
  82. package/dist/cjs/rules/requireTags.d.ts +2 -0
  83. package/dist/cjs/rules/requireTemplate.d.ts +2 -0
  84. package/dist/cjs/rules/requireThrows.d.ts +2 -0
  85. package/dist/cjs/rules/requireYields.d.ts +2 -0
  86. package/dist/cjs/rules/requireYieldsCheck.d.ts +2 -0
  87. package/dist/cjs/rules/sortTags.d.ts +2 -0
  88. package/dist/cjs/rules/tagLines.d.ts +2 -0
  89. package/dist/cjs/rules/textEscaping.d.ts +2 -0
  90. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +2 -0
  91. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +2 -0
  92. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +2 -0
  93. package/dist/cjs/rules/tsPreferFunctionType.d.ts +2 -0
  94. package/dist/cjs/rules/typeFormatting.d.ts +2 -0
  95. package/dist/cjs/rules/validTypes.d.ts +2 -0
  96. package/dist/cjs/tagNames.d.ts +15 -0
  97. package/dist/cjs/utils/hasReturnValue.d.ts +19 -0
  98. package/dist/defaultTagOrder.cjs +46 -0
  99. package/dist/defaultTagOrder.cjs.map +1 -0
  100. package/dist/defaultTagOrder.d.ts +5 -0
  101. package/dist/exportParser.cjs +732 -0
  102. package/dist/exportParser.cjs.map +1 -0
  103. package/dist/exportParser.d.ts +41 -0
  104. package/dist/generateDocs.cjs +342 -0
  105. package/dist/generateDocs.cjs.map +1 -0
  106. package/dist/generateOptions.cjs +62 -0
  107. package/dist/generateOptions.cjs.map +1 -0
  108. package/dist/generateRule.cjs +248 -0
  109. package/dist/generateRule.cjs.map +1 -0
  110. package/dist/generateRuleTypes.cjs +24 -0
  111. package/dist/generateRuleTypes.cjs.map +1 -0
  112. package/dist/getDefaultTagStructureForMode.cjs +289 -0
  113. package/dist/getDefaultTagStructureForMode.cjs.map +1 -0
  114. package/dist/getDefaultTagStructureForMode.d.ts +11 -0
  115. package/dist/getJsdocProcessorPlugin.cjs +587 -0
  116. package/dist/getJsdocProcessorPlugin.cjs.map +1 -0
  117. package/dist/getJsdocProcessorPlugin.cts +5 -0
  118. package/dist/getJsdocProcessorPlugin.d.ts +67 -0
  119. package/dist/index-cjs.cjs +595 -0
  120. package/dist/index-cjs.cjs.map +1 -0
  121. package/dist/index-cjs.d.ts +24 -0
  122. package/dist/index-esm.cjs +162 -0
  123. package/dist/index-esm.cjs.map +1 -0
  124. package/dist/index-esm.d.ts +72 -0
  125. package/dist/index.cjs +743 -0
  126. package/dist/index.cjs.cts +3 -0
  127. package/dist/index.cjs.map +1 -0
  128. package/dist/index.d.ts +93 -0
  129. package/dist/iterateJsdoc.cjs +2150 -0
  130. package/dist/iterateJsdoc.cjs.map +1 -0
  131. package/dist/iterateJsdoc.cts +7 -0
  132. package/dist/iterateJsdoc.d.ts +496 -0
  133. package/dist/jsdocUtils.cjs +1725 -0
  134. package/dist/jsdocUtils.cjs.map +1 -0
  135. package/dist/jsdocUtils.d.ts +494 -0
  136. package/dist/rules/checkAccess.cjs +40 -0
  137. package/dist/rules/checkAccess.cjs.map +1 -0
  138. package/dist/rules/checkAccess.d.ts +3 -0
  139. package/dist/rules/checkAlignment.cjs +78 -0
  140. package/dist/rules/checkAlignment.cjs.map +1 -0
  141. package/dist/rules/checkAlignment.d.ts +3 -0
  142. package/dist/rules/checkExamples.cjs +521 -0
  143. package/dist/rules/checkExamples.cjs.map +1 -0
  144. package/dist/rules/checkExamples.d.ts +4 -0
  145. package/dist/rules/checkIndentation.cjs +170 -0
  146. package/dist/rules/checkIndentation.cjs.map +1 -0
  147. package/dist/rules/checkIndentation.d.ts +3 -0
  148. package/dist/rules/checkLineAlignment.cjs +398 -0
  149. package/dist/rules/checkLineAlignment.cjs.map +1 -0
  150. package/dist/rules/checkLineAlignment.d.ts +10 -0
  151. package/dist/rules/checkParamNames.cjs +407 -0
  152. package/dist/rules/checkParamNames.cjs.map +1 -0
  153. package/dist/rules/checkParamNames.d.ts +3 -0
  154. package/dist/rules/checkPropertyNames.cjs +135 -0
  155. package/dist/rules/checkPropertyNames.cjs.map +1 -0
  156. package/dist/rules/checkPropertyNames.d.ts +3 -0
  157. package/dist/rules/checkSyntax.cjs +38 -0
  158. package/dist/rules/checkSyntax.cjs.map +1 -0
  159. package/dist/rules/checkSyntax.d.ts +3 -0
  160. package/dist/rules/checkTagNames.cjs +312 -0
  161. package/dist/rules/checkTagNames.cjs.map +1 -0
  162. package/dist/rules/checkTagNames.d.ts +3 -0
  163. package/dist/rules/checkTemplateNames.cjs +185 -0
  164. package/dist/rules/checkTemplateNames.cjs.map +1 -0
  165. package/dist/rules/checkTemplateNames.d.ts +3 -0
  166. package/dist/rules/checkTypes.cjs +111 -0
  167. package/dist/rules/checkTypes.cjs.map +1 -0
  168. package/dist/rules/checkTypes.d.ts +8 -0
  169. package/dist/rules/checkValues.cjs +166 -0
  170. package/dist/rules/checkValues.cjs.map +1 -0
  171. package/dist/rules/checkValues.d.ts +3 -0
  172. package/dist/rules/convertToJsdocComments.cjs +356 -0
  173. package/dist/rules/convertToJsdocComments.cjs.map +1 -0
  174. package/dist/rules/convertToJsdocComments.d.ts +267 -0
  175. package/dist/rules/emptyTags.cjs +85 -0
  176. package/dist/rules/emptyTags.cjs.map +1 -0
  177. package/dist/rules/emptyTags.d.ts +3 -0
  178. package/dist/rules/escapeInlineTags.cjs +149 -0
  179. package/dist/rules/escapeInlineTags.cjs.map +1 -0
  180. package/dist/rules/escapeInlineTags.d.ts +3 -0
  181. package/dist/rules/implementsOnClasses.cjs +74 -0
  182. package/dist/rules/implementsOnClasses.cjs.map +1 -0
  183. package/dist/rules/implementsOnClasses.d.ts +3 -0
  184. package/dist/rules/importsAsDependencies.cjs +104 -0
  185. package/dist/rules/importsAsDependencies.cjs.map +1 -0
  186. package/dist/rules/importsAsDependencies.d.ts +3 -0
  187. package/dist/rules/informativeDocs.cjs +187 -0
  188. package/dist/rules/informativeDocs.cjs.map +1 -0
  189. package/dist/rules/informativeDocs.d.ts +3 -0
  190. package/dist/rules/linesBeforeBlock.cjs +120 -0
  191. package/dist/rules/linesBeforeBlock.cjs.map +1 -0
  192. package/dist/rules/linesBeforeBlock.d.ts +3 -0
  193. package/dist/rules/matchDescription.cjs +356 -0
  194. package/dist/rules/matchDescription.cjs.map +1 -0
  195. package/dist/rules/matchDescription.d.ts +3 -0
  196. package/dist/rules/matchName.cjs +160 -0
  197. package/dist/rules/matchName.cjs.map +1 -0
  198. package/dist/rules/matchName.d.ts +3 -0
  199. package/dist/rules/multilineBlocks.cjs +431 -0
  200. package/dist/rules/multilineBlocks.cjs.map +1 -0
  201. package/dist/rules/multilineBlocks.d.ts +3 -0
  202. package/dist/rules/noBadBlocks.cjs +100 -0
  203. package/dist/rules/noBadBlocks.cjs.map +1 -0
  204. package/dist/rules/noBadBlocks.d.ts +3 -0
  205. package/dist/rules/noBlankBlockDescriptions.cjs +63 -0
  206. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -0
  207. package/dist/rules/noBlankBlockDescriptions.d.ts +3 -0
  208. package/dist/rules/noBlankBlocks.cjs +54 -0
  209. package/dist/rules/noBlankBlocks.cjs.map +1 -0
  210. package/dist/rules/noBlankBlocks.d.ts +3 -0
  211. package/dist/rules/noDefaults.cjs +102 -0
  212. package/dist/rules/noDefaults.cjs.map +1 -0
  213. package/dist/rules/noDefaults.d.ts +3 -0
  214. package/dist/rules/noMissingSyntax.cjs +196 -0
  215. package/dist/rules/noMissingSyntax.cjs.map +1 -0
  216. package/dist/rules/noMissingSyntax.d.ts +10 -0
  217. package/dist/rules/noMultiAsterisks.cjs +126 -0
  218. package/dist/rules/noMultiAsterisks.cjs.map +1 -0
  219. package/dist/rules/noMultiAsterisks.d.ts +3 -0
  220. package/dist/rules/noRestrictedSyntax.cjs +68 -0
  221. package/dist/rules/noRestrictedSyntax.cjs.map +1 -0
  222. package/dist/rules/noRestrictedSyntax.d.ts +3 -0
  223. package/dist/rules/noTypes.cjs +101 -0
  224. package/dist/rules/noTypes.cjs.map +1 -0
  225. package/dist/rules/noTypes.d.ts +3 -0
  226. package/dist/rules/noUndefinedTypes.cjs +588 -0
  227. package/dist/rules/noUndefinedTypes.cjs.map +1 -0
  228. package/dist/rules/noUndefinedTypes.d.ts +3 -0
  229. package/dist/rules/preferImportTag.cjs +362 -0
  230. package/dist/rules/preferImportTag.cjs.map +1 -0
  231. package/dist/rules/preferImportTag.d.ts +3 -0
  232. package/dist/rules/requireAsteriskPrefix.cjs +190 -0
  233. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -0
  234. package/dist/rules/requireAsteriskPrefix.d.ts +3 -0
  235. package/dist/rules/requireDescription.cjs +164 -0
  236. package/dist/rules/requireDescription.cjs.map +1 -0
  237. package/dist/rules/requireDescription.d.ts +3 -0
  238. package/dist/rules/requireDescriptionCompleteSentence.cjs +321 -0
  239. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -0
  240. package/dist/rules/requireDescriptionCompleteSentence.d.ts +3 -0
  241. package/dist/rules/requireExample.cjs +133 -0
  242. package/dist/rules/requireExample.cjs.map +1 -0
  243. package/dist/rules/requireExample.d.ts +3 -0
  244. package/dist/rules/requireFileOverview.cjs +194 -0
  245. package/dist/rules/requireFileOverview.cjs.map +1 -0
  246. package/dist/rules/requireFileOverview.d.ts +3 -0
  247. package/dist/rules/requireHyphenBeforeParamDescription.cjs +166 -0
  248. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -0
  249. package/dist/rules/requireHyphenBeforeParamDescription.d.ts +3 -0
  250. package/dist/rules/requireJsdoc.cjs +722 -0
  251. package/dist/rules/requireJsdoc.cjs.map +1 -0
  252. package/dist/rules/requireJsdoc.d.ts +25 -0
  253. package/dist/rules/requireParam.cjs +772 -0
  254. package/dist/rules/requireParam.cjs.map +1 -0
  255. package/dist/rules/requireParam.d.ts +4 -0
  256. package/dist/rules/requireParamDescription.cjs +105 -0
  257. package/dist/rules/requireParamDescription.cjs.map +1 -0
  258. package/dist/rules/requireParamDescription.d.ts +3 -0
  259. package/dist/rules/requireParamName.cjs +68 -0
  260. package/dist/rules/requireParamName.cjs.map +1 -0
  261. package/dist/rules/requireParamName.d.ts +3 -0
  262. package/dist/rules/requireParamType.cjs +104 -0
  263. package/dist/rules/requireParamType.cjs.map +1 -0
  264. package/dist/rules/requireParamType.d.ts +3 -0
  265. package/dist/rules/requireProperty.cjs +63 -0
  266. package/dist/rules/requireProperty.cjs.map +1 -0
  267. package/dist/rules/requireProperty.d.ts +3 -0
  268. package/dist/rules/requirePropertyDescription.cjs +29 -0
  269. package/dist/rules/requirePropertyDescription.cjs.map +1 -0
  270. package/dist/rules/requirePropertyDescription.d.ts +3 -0
  271. package/dist/rules/requirePropertyName.cjs +29 -0
  272. package/dist/rules/requirePropertyName.cjs.map +1 -0
  273. package/dist/rules/requirePropertyName.d.ts +3 -0
  274. package/dist/rules/requirePropertyType.cjs +29 -0
  275. package/dist/rules/requirePropertyType.cjs.map +1 -0
  276. package/dist/rules/requirePropertyType.d.ts +3 -0
  277. package/dist/rules/requireRejects.cjs +226 -0
  278. package/dist/rules/requireRejects.cjs.map +1 -0
  279. package/dist/rules/requireRejects.d.ts +3 -0
  280. package/dist/rules/requireReturns.cjs +262 -0
  281. package/dist/rules/requireReturns.cjs.map +1 -0
  282. package/dist/rules/requireReturns.d.ts +3 -0
  283. package/dist/rules/requireReturnsCheck.cjs +140 -0
  284. package/dist/rules/requireReturnsCheck.cjs.map +1 -0
  285. package/dist/rules/requireReturnsCheck.d.ts +3 -0
  286. package/dist/rules/requireReturnsDescription.cjs +72 -0
  287. package/dist/rules/requireReturnsDescription.cjs.map +1 -0
  288. package/dist/rules/requireReturnsDescription.d.ts +3 -0
  289. package/dist/rules/requireReturnsType.cjs +68 -0
  290. package/dist/rules/requireReturnsType.cjs.map +1 -0
  291. package/dist/rules/requireReturnsType.d.ts +3 -0
  292. package/dist/rules/requireTags.cjs +74 -0
  293. package/dist/rules/requireTags.cjs.map +1 -0
  294. package/dist/rules/requireTags.d.ts +3 -0
  295. package/dist/rules/requireTemplate.cjs +220 -0
  296. package/dist/rules/requireTemplate.cjs.map +1 -0
  297. package/dist/rules/requireTemplate.d.ts +3 -0
  298. package/dist/rules/requireThrows.cjs +118 -0
  299. package/dist/rules/requireThrows.cjs.map +1 -0
  300. package/dist/rules/requireThrows.d.ts +3 -0
  301. package/dist/rules/requireYields.cjs +224 -0
  302. package/dist/rules/requireYields.cjs.map +1 -0
  303. package/dist/rules/requireYields.d.ts +3 -0
  304. package/dist/rules/requireYieldsCheck.cjs +179 -0
  305. package/dist/rules/requireYieldsCheck.cjs.map +1 -0
  306. package/dist/rules/requireYieldsCheck.d.ts +3 -0
  307. package/dist/rules/sortTags.cjs +656 -0
  308. package/dist/rules/sortTags.cjs.map +1 -0
  309. package/dist/rules/sortTags.d.ts +3 -0
  310. package/dist/rules/tagLines.cjs +374 -0
  311. package/dist/rules/tagLines.cjs.map +1 -0
  312. package/dist/rules/tagLines.d.ts +3 -0
  313. package/dist/rules/textEscaping.cjs +141 -0
  314. package/dist/rules/textEscaping.cjs.map +1 -0
  315. package/dist/rules/textEscaping.d.ts +3 -0
  316. package/dist/rules/tsMethodSignatureStyle.cjs +240 -0
  317. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -0
  318. package/dist/rules/tsMethodSignatureStyle.d.ts +3 -0
  319. package/dist/rules/tsNoEmptyObjectType.cjs +62 -0
  320. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -0
  321. package/dist/rules/tsNoEmptyObjectType.d.ts +3 -0
  322. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +104 -0
  323. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -0
  324. package/dist/rules/tsNoUnnecessaryTemplateExpression.d.ts +3 -0
  325. package/dist/rules/tsPreferFunctionType.cjs +110 -0
  326. package/dist/rules/tsPreferFunctionType.cjs.map +1 -0
  327. package/dist/rules/tsPreferFunctionType.d.ts +3 -0
  328. package/dist/rules/typeFormatting.cjs +607 -0
  329. package/dist/rules/typeFormatting.cjs.map +1 -0
  330. package/dist/rules/typeFormatting.d.ts +3 -0
  331. package/dist/rules/validTypes.cjs +328 -0
  332. package/dist/rules/validTypes.cjs.map +1 -0
  333. package/dist/rules/validTypes.d.ts +3 -0
  334. package/dist/rules.d.ts +3203 -0
  335. package/dist/tagNames.cjs +244 -0
  336. package/dist/tagNames.cjs.map +1 -0
  337. package/dist/tagNames.d.ts +16 -0
  338. package/dist/to-valid-identifier.cjs +263 -0
  339. package/dist/utils/hasReturnValue.cjs +495 -0
  340. package/dist/utils/hasReturnValue.cjs.map +1 -0
  341. package/dist/utils/hasReturnValue.d.ts +20 -0
  342. package/package.json +220 -0
  343. package/rollup.config.js +16 -0
  344. package/src/WarnSettings.js +34 -0
  345. package/src/alignTransform.js +444 -0
  346. package/src/buildForbidRuleDefinition.js +106 -0
  347. package/src/buildRejectOrPreferRuleDefinition.js +481 -0
  348. package/src/defaultTagOrder.js +169 -0
  349. package/src/exportParser.js +973 -0
  350. package/src/getDefaultTagStructureForMode.js +968 -0
  351. package/src/getJsdocProcessorPlugin.cts +5 -0
  352. package/src/getJsdocProcessorPlugin.js +692 -0
  353. package/src/index-cjs.js +755 -0
  354. package/src/index-esm.js +196 -0
  355. package/src/index.cjs.cts +3 -0
  356. package/src/index.js +940 -0
  357. package/src/iterateJsdoc.cts +7 -0
  358. package/src/iterateJsdoc.js +2612 -0
  359. package/src/jsdocUtils.js +2158 -0
  360. package/src/rules/checkAccess.js +45 -0
  361. package/src/rules/checkAlignment.js +82 -0
  362. package/src/rules/checkExamples.js +613 -0
  363. package/src/rules/checkIndentation.js +176 -0
  364. package/src/rules/checkLineAlignment.js +453 -0
  365. package/src/rules/checkParamNames.js +541 -0
  366. package/src/rules/checkPropertyNames.js +174 -0
  367. package/src/rules/checkSyntax.js +30 -0
  368. package/src/rules/checkTagNames.js +414 -0
  369. package/src/rules/checkTemplateNames.js +208 -0
  370. package/src/rules/checkTypes.js +130 -0
  371. package/src/rules/checkValues.js +264 -0
  372. package/src/rules/convertToJsdocComments.js +444 -0
  373. package/src/rules/emptyTags.js +106 -0
  374. package/src/rules/escapeInlineTags.js +189 -0
  375. package/src/rules/implementsOnClasses.js +78 -0
  376. package/src/rules/importsAsDependencies.js +132 -0
  377. package/src/rules/informativeDocs.js +228 -0
  378. package/src/rules/linesBeforeBlock.js +144 -0
  379. package/src/rules/matchDescription.js +413 -0
  380. package/src/rules/matchName.js +179 -0
  381. package/src/rules/multilineBlocks.js +562 -0
  382. package/src/rules/noBadBlocks.js +127 -0
  383. package/src/rules/noBlankBlockDescriptions.js +69 -0
  384. package/src/rules/noBlankBlocks.js +55 -0
  385. package/src/rules/noDefaults.js +104 -0
  386. package/src/rules/noMissingSyntax.js +215 -0
  387. package/src/rules/noMultiAsterisks.js +162 -0
  388. package/src/rules/noRestrictedSyntax.js +72 -0
  389. package/src/rules/noTypes.js +108 -0
  390. package/src/rules/noUndefinedTypes.js +797 -0
  391. package/src/rules/preferImportTag.js +521 -0
  392. package/src/rules/requireAsteriskPrefix.js +217 -0
  393. package/src/rules/requireDescription.js +190 -0
  394. package/src/rules/requireDescriptionCompleteSentence.js +376 -0
  395. package/src/rules/requireExample.js +143 -0
  396. package/src/rules/requireFileOverview.js +213 -0
  397. package/src/rules/requireHyphenBeforeParamDescription.js +210 -0
  398. package/src/rules/requireJsdoc.js +897 -0
  399. package/src/rules/requireParam.js +848 -0
  400. package/src/rules/requireParamDescription.js +110 -0
  401. package/src/rules/requireParamName.js +69 -0
  402. package/src/rules/requireParamType.js +109 -0
  403. package/src/rules/requireProperty.js +66 -0
  404. package/src/rules/requirePropertyDescription.js +25 -0
  405. package/src/rules/requirePropertyName.js +25 -0
  406. package/src/rules/requirePropertyType.js +25 -0
  407. package/src/rules/requireRejects.js +246 -0
  408. package/src/rules/requireReturns.js +291 -0
  409. package/src/rules/requireReturnsCheck.js +180 -0
  410. package/src/rules/requireReturnsDescription.js +73 -0
  411. package/src/rules/requireReturnsType.js +65 -0
  412. package/src/rules/requireTags.js +85 -0
  413. package/src/rules/requireTemplate.js +246 -0
  414. package/src/rules/requireThrows.js +128 -0
  415. package/src/rules/requireYields.js +265 -0
  416. package/src/rules/requireYieldsCheck.js +226 -0
  417. package/src/rules/sortTags.js +766 -0
  418. package/src/rules/tagLines.js +486 -0
  419. package/src/rules/textEscaping.js +158 -0
  420. package/src/rules/tsMethodSignatureStyle.js +300 -0
  421. package/src/rules/tsNoEmptyObjectType.js +61 -0
  422. package/src/rules/tsNoUnnecessaryTemplateExpression.js +130 -0
  423. package/src/rules/tsPreferFunctionType.js +127 -0
  424. package/src/rules/typeFormatting.js +690 -0
  425. package/src/rules/validTypes.js +466 -0
  426. package/src/rules.d.ts +3203 -0
  427. package/src/tagNames.js +301 -0
  428. package/src/utils/hasReturnValue.js +572 -0
  429. package/typings/babel__eslint-parser.d.ts +1 -0
  430. package/typings/gitdown.d.ts +16 -0
@@ -0,0 +1,189 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+
3
+ export default iterateJsdoc(({
4
+ context,
5
+ jsdoc,
6
+ settings,
7
+ utils,
8
+ }) => {
9
+ const {
10
+ mode,
11
+ } = settings;
12
+
13
+ if (mode !== 'typescript') {
14
+ return;
15
+ }
16
+
17
+ const {
18
+ allowedInlineTags = [],
19
+ enableFixer = false,
20
+ fixType = 'backslash',
21
+ } = context.options[0] || {};
22
+
23
+ const {
24
+ description,
25
+ } = utils.getDescription();
26
+
27
+ /** @type {string[]} */
28
+ const tagNames = [];
29
+
30
+ /** @type {number[]} */
31
+ const indexes = [];
32
+
33
+ const unescapedInlineTagRegex = /(?:^|\s)@(\w+)/gv;
34
+ for (const [
35
+ idx,
36
+ descLine,
37
+ ] of (
38
+ description.startsWith('\n') ? description.slice(1) : description
39
+ ).split('\n').entries()
40
+ ) {
41
+ descLine.replaceAll(unescapedInlineTagRegex, (_, tagName) => {
42
+ if (allowedInlineTags.includes(tagName)) {
43
+ return _;
44
+ }
45
+
46
+ tagNames.push(tagName);
47
+ indexes.push(idx);
48
+
49
+ return _;
50
+ });
51
+ }
52
+
53
+ for (const [
54
+ idx,
55
+ tagName,
56
+ ] of tagNames.entries()) {
57
+ utils.reportJSDoc(
58
+ `Unexpected inline JSDoc tag. Did you mean to use {@${tagName}}, \\@${tagName}, or \`@${tagName}\`?`,
59
+ {
60
+ line: indexes[idx] + 1,
61
+ },
62
+ enableFixer ?
63
+ () => {
64
+ utils.setBlockDescription((info, seedTokens, descLines) => {
65
+ return descLines.map((desc) => {
66
+ const newDesc = desc.replaceAll(
67
+ new RegExp(`(^|\\s)@${
68
+ // No need to escape, as contains only safe characters
69
+ tagName
70
+ }`, 'gv'),
71
+ fixType === 'backticks' ? '$1`@' + tagName + '`' : '$1\\@' + tagName,
72
+ );
73
+
74
+ return {
75
+ number: 0,
76
+ source: '',
77
+ tokens: seedTokens({
78
+ ...info,
79
+ description: newDesc,
80
+ postDelimiter: newDesc.trim() ? ' ' : '',
81
+ }),
82
+ };
83
+ });
84
+ });
85
+ } :
86
+ null,
87
+ );
88
+ }
89
+
90
+ /**
91
+ * @param {string} tagName
92
+ * @returns {[
93
+ * RegExp,
94
+ * (description: string) => string
95
+ * ]}
96
+ */
97
+ const escapeInlineTags = (tagName) => {
98
+ const regex = new RegExp(`(^|\\s)@${
99
+ // No need to escape, as contains only safe characters
100
+ tagName
101
+ }`, 'gv');
102
+
103
+ return [
104
+ regex,
105
+ /**
106
+ * @param {string} desc
107
+ */
108
+ (desc) => {
109
+ return desc.replaceAll(
110
+ regex,
111
+ fixType === 'backticks' ? '$1`@' + tagName + '`' : '$1\\@' + tagName,
112
+ );
113
+ },
114
+ ];
115
+ };
116
+
117
+ for (const tag of jsdoc.tags) {
118
+ if (tag.tag === 'example') {
119
+ continue;
120
+ }
121
+
122
+ /** @type {string} */
123
+ let tagName = '';
124
+ while (/** @type {string[]} */ (
125
+ utils.getTagDescription(tag, true)
126
+ // eslint-disable-next-line no-loop-func -- Safe
127
+ ).some((desc) => {
128
+ tagName = unescapedInlineTagRegex.exec(desc)?.[1] ?? '';
129
+ if (allowedInlineTags.includes(tagName)) {
130
+ return false;
131
+ }
132
+
133
+ return tagName;
134
+ })) {
135
+ const line = utils.setTagDescription(tag, ...escapeInlineTags(tagName)) +
136
+ tag.source[0].number;
137
+ utils.reportJSDoc(
138
+ `Unexpected inline JSDoc tag. Did you mean to use {@${tagName}}, \\@${tagName}, or \`@${tagName}\`?`,
139
+ {
140
+ line,
141
+ },
142
+ enableFixer ? () => {} : null,
143
+ true,
144
+ );
145
+ }
146
+ }
147
+ }, {
148
+ iterateAllJsdocs: true,
149
+ meta: {
150
+ docs: {
151
+ description: 'Reports use of JSDoc tags in non-tag positions (in the default "typescript" mode).',
152
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/escape-inline-tags.md#repos-sticky-header',
153
+ },
154
+ fixable: 'code',
155
+ schema: [
156
+ {
157
+ additionalProperties: false,
158
+ properties: {
159
+ allowedInlineTags: {
160
+ description: 'A listing of tags you wish to allow unescaped. Defaults to an empty array.',
161
+ items: {
162
+ type: 'string',
163
+ },
164
+ type: 'array',
165
+ },
166
+ enableFixer: {
167
+ description: 'Whether to enable the fixer. Defaults to `false`.',
168
+ type: 'boolean',
169
+ },
170
+ fixType: {
171
+ description: `How to escape the inline tag.
172
+
173
+ May be "backticks" to enclose tags in backticks (treating as code segments), or
174
+ "backslash" to escape tags with a backslash, i.e., \`\\@\`
175
+
176
+ Defaults to "backslash".`,
177
+ enum: [
178
+ 'backticks',
179
+ 'backslash',
180
+ ],
181
+ type: 'string',
182
+ },
183
+ },
184
+ type: 'object',
185
+ },
186
+ ],
187
+ type: 'suggestion',
188
+ },
189
+ });
@@ -0,0 +1,78 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+
3
+ export default iterateJsdoc(({
4
+ report,
5
+ utils,
6
+ }) => {
7
+ const iteratingFunction = utils.isIteratingFunctionOrVariable();
8
+
9
+ if (iteratingFunction) {
10
+ if (utils.hasATag([
11
+ 'class',
12
+ 'constructor',
13
+ ]) ||
14
+ utils.isConstructor()
15
+ ) {
16
+ return;
17
+ }
18
+ } else if (!utils.isVirtualFunction()) {
19
+ return;
20
+ }
21
+
22
+ utils.forEachPreferredTag('implements', (tag) => {
23
+ report('@implements used on a non-constructor function', null, tag);
24
+ });
25
+ }, {
26
+ contextDefaults: true,
27
+ meta: {
28
+ docs: {
29
+ description: 'Prohibits use of `@implements` on non-constructor functions (to enforce the tag only being used on classes/constructors).',
30
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/implements-on-classes.md#repos-sticky-header',
31
+ },
32
+ schema: [
33
+ {
34
+ additionalProperties: false,
35
+ properties: {
36
+ contexts: {
37
+ description: `Set this to an array of strings representing the AST context (or an object with
38
+ \`context\` and \`comment\` properties) where you wish the rule to be applied.
39
+
40
+ \`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
41
+
42
+ Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
43
+ \`FunctionExpression\`). Set to \`"any"\` if you want
44
+ the rule to apply to any JSDoc block throughout your files (as is necessary
45
+ for finding function blocks not attached to a function declaration or
46
+ expression, i.e., \`@callback\` or \`@function\` (or its aliases \`@func\` or
47
+ \`@method\`) (including those associated with an \`@interface\`).
48
+
49
+ See the ["AST and Selectors"](../#advanced-ast-and-selectors)
50
+ section of our Advanced docs for more on the expected format.`,
51
+ items: {
52
+ anyOf: [
53
+ {
54
+ type: 'string',
55
+ },
56
+ {
57
+ additionalProperties: false,
58
+ properties: {
59
+ comment: {
60
+ type: 'string',
61
+ },
62
+ context: {
63
+ type: 'string',
64
+ },
65
+ },
66
+ type: 'object',
67
+ },
68
+ ],
69
+ },
70
+ type: 'array',
71
+ },
72
+ },
73
+ type: 'object',
74
+ },
75
+ ],
76
+ type: 'suggestion',
77
+ },
78
+ });
@@ -0,0 +1,132 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+ import {
3
+ parse,
4
+ traverse,
5
+ tryParse,
6
+ } from '@es-joy/jsdoccomment';
7
+ import * as resolve from '@es-joy/resolve.exports';
8
+ import {
9
+ readFileSync,
10
+ } from 'node:fs';
11
+ import {
12
+ isBuiltin as isBuiltinModule,
13
+ } from 'node:module';
14
+ import {
15
+ join,
16
+ } from 'node:path';
17
+
18
+ /**
19
+ * @type {Set<string>|null}
20
+ */
21
+ let deps;
22
+
23
+ const setDeps = function () {
24
+ try {
25
+ const pkg = JSON.parse(
26
+ readFileSync(join(process.cwd(), './package.json'), 'utf8'),
27
+ );
28
+ deps = new Set([
29
+ ...(pkg.dependencies ?
30
+ /* c8 ignore next 2 */
31
+ Object.keys(pkg.dependencies) :
32
+ []),
33
+ ...(pkg.devDependencies ?
34
+ /* c8 ignore next 2 */
35
+ Object.keys(pkg.devDependencies) :
36
+ []),
37
+ ]);
38
+ /* c8 ignore next -- our package.json exists */
39
+ } catch (error) {
40
+ /* c8 ignore next -- our package.json exists */
41
+ deps = null;
42
+ /* c8 ignore next 4 -- our package.json exists */
43
+ /* eslint-disable no-console -- Inform user */
44
+ console.log(error);
45
+ /* eslint-enable no-console -- Inform user */
46
+ }
47
+ };
48
+
49
+ const moduleCheck = new Map();
50
+
51
+ export default iterateJsdoc(({
52
+ jsdoc,
53
+ settings,
54
+ utils,
55
+ }) => {
56
+ if (deps === undefined) {
57
+ setDeps();
58
+ }
59
+
60
+ /* c8 ignore next 3 -- our package.json exists */
61
+ if (deps === null) {
62
+ return;
63
+ }
64
+
65
+ const {
66
+ mode,
67
+ } = settings;
68
+
69
+ for (const tag of jsdoc.tags) {
70
+ let typeAst;
71
+ try {
72
+ typeAst = mode === 'permissive' ? tryParse(tag.type) : parse(tag.type, mode);
73
+ } catch {
74
+ continue;
75
+ }
76
+
77
+ // eslint-disable-next-line no-loop-func -- Safe
78
+ traverse(typeAst, (nde) => {
79
+ /* c8 ignore next 3 -- TS guard */
80
+ if (deps === null) {
81
+ return;
82
+ }
83
+
84
+ if (nde.type === 'JsdocTypeImport') {
85
+ let mod = nde.element.value.replace(
86
+ /^(@[^\/]+\/[^\/]+|[^\/]+).*$/v, '$1',
87
+ );
88
+
89
+ if ((/^[.\/]/v).test(mod)) {
90
+ return;
91
+ }
92
+
93
+ if (isBuiltinModule(mod)) {
94
+ // mod = '@types/node';
95
+ // moduleCheck.set(mod, !deps.has(mod));
96
+ return;
97
+ } else if (!moduleCheck.has(mod)) {
98
+ let pkg;
99
+ try {
100
+ pkg = JSON.parse(
101
+ readFileSync(join(process.cwd(), 'node_modules', mod, './package.json'), 'utf8'),
102
+ );
103
+ } catch {
104
+ // Ignore
105
+ }
106
+
107
+ if (!pkg || (!pkg.types && !pkg.typings && !resolve.types(pkg))) {
108
+ mod = `@types/${mod}`;
109
+ }
110
+
111
+ moduleCheck.set(mod, !deps.has(mod));
112
+ }
113
+
114
+ if (moduleCheck.get(mod)) {
115
+ utils.reportJSDoc(
116
+ 'import points to package which is not found in dependencies',
117
+ tag,
118
+ );
119
+ }
120
+ }
121
+ });
122
+ }
123
+ }, {
124
+ iterateAllJsdocs: true,
125
+ meta: {
126
+ docs: {
127
+ description: 'Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies`',
128
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/imports-as-dependencies.md#repos-sticky-header',
129
+ },
130
+ type: 'suggestion',
131
+ },
132
+ });
@@ -0,0 +1,228 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+ import {
3
+ areDocsInformative,
4
+ } from 'are-docs-informative';
5
+
6
+ const defaultAliases = {
7
+ a: [
8
+ 'an', 'our',
9
+ ],
10
+ };
11
+
12
+ const defaultUselessWords = [
13
+ 'a', 'an', 'i', 'in', 'of', 's', 'the',
14
+ ];
15
+
16
+ /**
17
+ * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node|null|undefined} node
18
+ * @returns {string[]}
19
+ */
20
+ const getNamesFromNode = (node) => {
21
+ switch (node?.type) {
22
+ case 'AccessorProperty':
23
+ case 'MethodDefinition':
24
+ case 'PropertyDefinition':
25
+ case 'TSAbstractAccessorProperty':
26
+ case 'TSAbstractMethodDefinition':
27
+ case 'TSAbstractPropertyDefinition':
28
+ return [
29
+ ...getNamesFromNode(
30
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */ (
31
+ node.parent
32
+ ).parent,
33
+ ),
34
+ ...getNamesFromNode(
35
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */
36
+ (node.key),
37
+ ),
38
+ ];
39
+
40
+ case 'ClassDeclaration':
41
+ case 'ClassExpression':
42
+ case 'FunctionDeclaration':
43
+ case 'FunctionExpression':
44
+ case 'TSDeclareFunction':
45
+ case 'TSEnumDeclaration':
46
+ case 'TSEnumMember':
47
+ case 'TSInterfaceDeclaration':
48
+ case 'TSMethodSignature':
49
+ case 'TSModuleDeclaration':
50
+ case 'TSTypeAliasDeclaration':
51
+ return getNamesFromNode(
52
+ /** @type {import('@typescript-eslint/types').TSESTree.ClassDeclaration} */
53
+ (node).id,
54
+ );
55
+ case 'ExportDefaultDeclaration':
56
+ case 'ExportNamedDeclaration':
57
+ return getNamesFromNode(
58
+ /** @type {import('@typescript-eslint/types').TSESTree.ExportNamedDeclaration} */
59
+ (node).declaration,
60
+ );
61
+ case 'Identifier':
62
+ return [
63
+ node.name,
64
+ ];
65
+ case 'Property':
66
+ return getNamesFromNode(
67
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */
68
+ (node.key),
69
+ );
70
+ case 'VariableDeclaration':
71
+ return getNamesFromNode(
72
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */
73
+ (node.declarations[0]),
74
+ );
75
+ case 'VariableDeclarator':
76
+ return [
77
+ ...getNamesFromNode(
78
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */
79
+ (node.id),
80
+ ),
81
+ ...getNamesFromNode(
82
+ /** @type {import('@typescript-eslint/types').TSESTree.Node} */
83
+ (node.init),
84
+ ),
85
+ ].filter(Boolean);
86
+ default:
87
+ return [];
88
+ }
89
+ };
90
+
91
+ export default iterateJsdoc(({
92
+ context,
93
+ jsdoc,
94
+ node,
95
+ report,
96
+ utils,
97
+ }) => {
98
+ const /** @type {{aliases: {[key: string]: string[]}, excludedTags: string[], uselessWords: string[]}} */ {
99
+ aliases = defaultAliases,
100
+ excludedTags = [],
101
+ uselessWords = defaultUselessWords,
102
+ } = context.options[0] || {};
103
+ const nodeNames = getNamesFromNode(node);
104
+
105
+ /**
106
+ * @param {string} text
107
+ * @param {string} extraName
108
+ * @returns {boolean}
109
+ */
110
+ const descriptionIsRedundant = (text, extraName = '') => {
111
+ const textTrimmed = text.trim();
112
+ return Boolean(textTrimmed) && !areDocsInformative(textTrimmed, [
113
+ extraName, nodeNames,
114
+ ].filter(Boolean).join(' '), {
115
+ aliases,
116
+ uselessWords,
117
+ });
118
+ };
119
+
120
+ const {
121
+ description,
122
+ lastDescriptionLine,
123
+ } = utils.getDescription();
124
+ let descriptionReported = false;
125
+
126
+ for (const tag of jsdoc.tags) {
127
+ if (excludedTags.includes(tag.tag)) {
128
+ continue;
129
+ }
130
+
131
+ if (descriptionIsRedundant(tag.description, tag.name)) {
132
+ utils.reportJSDoc(
133
+ 'This tag description only repeats the name it describes.',
134
+ tag,
135
+ );
136
+ }
137
+
138
+ descriptionReported ||= tag.description === description &&
139
+ /** @type {import('comment-parser').Spec & {line: import('../iterateJsdoc.js').Integer}} */
140
+ (tag).line === lastDescriptionLine;
141
+ }
142
+
143
+ if (!descriptionReported && descriptionIsRedundant(description)) {
144
+ report('This description only repeats the name it describes.');
145
+ }
146
+ }, {
147
+ iterateAllJsdocs: true,
148
+ meta: {
149
+ docs: {
150
+ description:
151
+ 'This rule reports doc comments that only restate their attached name.',
152
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/informative-docs.md#repos-sticky-header',
153
+ },
154
+ schema: [
155
+ {
156
+ additionalProperties: false,
157
+ properties: {
158
+ aliases: {
159
+ description: `The \`aliases\` option allows indicating words as synonyms (aliases) of each other.
160
+
161
+ For example, with \`{ aliases: { emoji: ["smiley", "winkey"] } }\`, the following comment would be considered uninformative:
162
+
163
+ \`\`\`js
164
+ /** A smiley/winkey. */
165
+ let emoji;
166
+ \`\`\`
167
+
168
+ The default \`aliases\` option is:
169
+
170
+ \`\`\`json
171
+ {
172
+ "a": ["an", "our"]
173
+ }
174
+ \`\`\``,
175
+ patternProperties: {
176
+ '.*': {
177
+ items: {
178
+ type: 'string',
179
+ },
180
+ type: 'array',
181
+ },
182
+ },
183
+ },
184
+ excludedTags: {
185
+ description: `Tags that should not be checked for valid contents.
186
+
187
+ For example, with \`{ excludedTags: ["category"] }\`, the following comment would not be considered uninformative:
188
+
189
+ \`\`\`js
190
+ /** @category Types */
191
+ function computeTypes(node) {
192
+ // ...
193
+ }
194
+ \`\`\`
195
+
196
+ No tags are excluded by default.`,
197
+ items: {
198
+ type: 'string',
199
+ },
200
+ type: 'array',
201
+ },
202
+ uselessWords: {
203
+ description: `Words that are ignored when searching for one that adds meaning.
204
+
205
+ For example, with \`{ uselessWords: ["our"] }\`, the following comment would be considered uninformative:
206
+
207
+ \`\`\`js
208
+ /** Our text. */
209
+ let text;
210
+ \`\`\`
211
+
212
+ The default \`uselessWords\` option is:
213
+
214
+ \`\`\`json
215
+ ["a", "an", "i", "in", "of", "s", "the"]
216
+ \`\`\``,
217
+ items: {
218
+ type: 'string',
219
+ },
220
+ type: 'array',
221
+ },
222
+ },
223
+ type: 'object',
224
+ },
225
+ ],
226
+ type: 'suggestion',
227
+ },
228
+ });