@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,376 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+ import escapeStringRegexp from 'escape-string-regexp';
3
+
4
+ const otherDescriptiveTags = new Set([
5
+ 'classdesc', 'deprecated', 'exception', 'file', 'fileoverview', 'overview',
6
+ // 'copyright' and 'see' might be good addition, but as the former may be
7
+ // sensitive text, and the latter may have just a link, they are not
8
+ // included by default
9
+ 'summary', 'throws', 'todo', 'yield', 'yields',
10
+ ]);
11
+
12
+ /**
13
+ * @param {string} text
14
+ * @returns {string[]}
15
+ */
16
+ const extractParagraphs = (text) => {
17
+ return text.split(/(?<![;:])\n\n+/v);
18
+ };
19
+
20
+ /**
21
+ * @param {string} text
22
+ * @param {string|RegExp} abbreviationsRegex
23
+ * @returns {string[]}
24
+ */
25
+ const extractSentences = (text, abbreviationsRegex) => {
26
+ const txt = text
27
+ // Remove all {} tags.
28
+ .replaceAll(/(?<!^)\{[\s\S]*?\}\s*/gv, '')
29
+
30
+ // Remove custom abbreviations
31
+ .replace(abbreviationsRegex, '');
32
+
33
+ const sentenceEndGrouping = /([.?!])(?:\s+|$)/gv;
34
+
35
+ const puncts = [
36
+ ...txt.matchAll(sentenceEndGrouping),
37
+ ].map((sentEnd) => {
38
+ return sentEnd[0];
39
+ });
40
+
41
+ return txt
42
+ .split(/[.?!](?:\s+|$)/v)
43
+
44
+ // Re-add the dot.
45
+ .map((sentence, idx) => {
46
+ return !puncts[idx] && /^\s*$/v.test(sentence) ? sentence : `${sentence}${puncts[idx] || ''}`;
47
+ });
48
+ };
49
+
50
+ /**
51
+ * @param {string} text
52
+ * @returns {boolean}
53
+ */
54
+ const isNewLinePrecededByAPeriod = (text) => {
55
+ /** @type {boolean} */
56
+ let lastLineEndsSentence;
57
+
58
+ const lines = text.split('\n');
59
+
60
+ return !lines.some((line) => {
61
+ if (lastLineEndsSentence === false && /^[A-Z][a-z]/v.test(line)) {
62
+ return true;
63
+ }
64
+
65
+ lastLineEndsSentence = /[.:?!\|]$/v.test(line);
66
+
67
+ return false;
68
+ });
69
+ };
70
+
71
+ /**
72
+ * @param {string} str
73
+ * @returns {boolean}
74
+ */
75
+ const isCapitalized = (str) => {
76
+ return str[0] === str[0].toUpperCase();
77
+ };
78
+
79
+ /**
80
+ * @param {string} str
81
+ * @returns {boolean}
82
+ */
83
+ const isTable = (str) => {
84
+ return str.charAt(0) === '|';
85
+ };
86
+
87
+ /**
88
+ * @param {string} str
89
+ * @returns {string}
90
+ */
91
+ const capitalize = (str) => {
92
+ return str.charAt(0).toUpperCase() + str.slice(1);
93
+ };
94
+
95
+ /**
96
+ * @param {string} description
97
+ * @param {import('../iterateJsdoc.js').Report} reportOrig
98
+ * @param {import('eslint').Rule.Node} jsdocNode
99
+ * @param {string|RegExp} abbreviationsRegex
100
+ * @param {import('eslint').SourceCode} sourceCode
101
+ * @param {import('comment-parser').Spec|{
102
+ * line: import('../iterateJsdoc.js').Integer
103
+ * }} tag
104
+ * @param {boolean} newlineBeforeCapsAssumesBadSentenceEnd
105
+ * @returns {boolean}
106
+ */
107
+ const validateDescription = (
108
+ description, reportOrig, jsdocNode, abbreviationsRegex,
109
+ sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd,
110
+ ) => {
111
+ if (!description || (/^\n+$/v).test(description)) {
112
+ return false;
113
+ }
114
+
115
+ const descriptionNoHeadings = description.replaceAll(/^\s*#[^\n]*(\n|$)/gmv, '');
116
+
117
+ const paragraphs = extractParagraphs(descriptionNoHeadings).filter(Boolean);
118
+
119
+ return paragraphs.some((paragraph, parIdx) => {
120
+ const sentences = extractSentences(paragraph, abbreviationsRegex);
121
+
122
+ const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {
123
+ let text = sourceCode.getText(jsdocNode);
124
+
125
+ if (!/[.:?!]$/v.test(paragraph)) {
126
+ const line = paragraph.split('\n').findLast(Boolean);
127
+ text = text.replace(new RegExp(`${escapeStringRegexp(
128
+ /** @type {string} */
129
+ (line),
130
+ )}$`, 'mv'), `${line}.`);
131
+ }
132
+
133
+ for (const sentence of sentences.filter((sentence_) => {
134
+ return !(/^\s*$/v).test(sentence_) && !isCapitalized(sentence_) &&
135
+ !isTable(sentence_);
136
+ })) {
137
+ const beginning = sentence.split('\n')[0];
138
+
139
+ if ('tag' in tag && tag.tag) {
140
+ const reg = new RegExp(`(@${escapeStringRegexp(tag.tag)}.*)${escapeStringRegexp(beginning)}`, 'v');
141
+
142
+ text = text.replace(reg, (_$0, $1) => {
143
+ return $1 + capitalize(beginning);
144
+ });
145
+ } else {
146
+ text = text.replace(new RegExp('((?:[.?!]|\\*|\\})\\s*)' + escapeStringRegexp(beginning), 'v'), '$1' + capitalize(beginning));
147
+ }
148
+ }
149
+
150
+ return fixer.replaceText(jsdocNode, text);
151
+ };
152
+
153
+ /**
154
+ * @param {string} msg
155
+ * @param {import('eslint').Rule.ReportFixer | null | undefined} fixer
156
+ * @param {{
157
+ * line?: number | undefined;
158
+ * column?: number | undefined;
159
+ * } | (import('comment-parser').Spec & {
160
+ * line?: number | undefined;
161
+ * column?: number | undefined;
162
+ * })} tagObj
163
+ * @returns {void}
164
+ */
165
+ const report = (msg, fixer, tagObj) => {
166
+ if ('line' in tagObj) {
167
+ /**
168
+ * @type {{
169
+ * line: number;
170
+ * }}
171
+ */ (tagObj).line += parIdx * 2;
172
+ } else {
173
+ /** @type {import('comment-parser').Spec} */ (
174
+ tagObj
175
+ ).source[0].number += parIdx * 2;
176
+ }
177
+
178
+ // Avoid errors if old column doesn't exist here
179
+ tagObj.column = 0;
180
+ reportOrig(msg, fixer, tagObj);
181
+ };
182
+
183
+ if (sentences.some((sentence) => {
184
+ return (/^[.?!]$/v).test(sentence);
185
+ })) {
186
+ report('Sentences must be more than punctuation.', null, tag);
187
+ }
188
+
189
+ if (sentences.some((sentence) => {
190
+ return !(/^\s*$/v).test(sentence) && !isCapitalized(sentence) && !isTable(sentence);
191
+ })) {
192
+ report('Sentences should start with an uppercase character.', fix, tag);
193
+ }
194
+
195
+ const paragraphNoAbbreviations = paragraph.replace(abbreviationsRegex, '');
196
+
197
+ if (!/(?:[.?!\|]|```)\s*$/v.test(paragraphNoAbbreviations)) {
198
+ report('Sentences must end with a period.', fix, tag);
199
+ return true;
200
+ }
201
+
202
+ if (newlineBeforeCapsAssumesBadSentenceEnd && !isNewLinePrecededByAPeriod(paragraphNoAbbreviations)) {
203
+ report('A line of text is started with an uppercase character, but the preceding line does not end the sentence.', null, tag);
204
+
205
+ return true;
206
+ }
207
+
208
+ return false;
209
+ });
210
+ };
211
+
212
+ export default iterateJsdoc(({
213
+ context,
214
+ jsdoc,
215
+ jsdocNode,
216
+ report,
217
+ sourceCode,
218
+ utils,
219
+ }) => {
220
+ const /** @type {{abbreviations: string[], newlineBeforeCapsAssumesBadSentenceEnd: boolean}} */ {
221
+ abbreviations = [],
222
+ newlineBeforeCapsAssumesBadSentenceEnd = false,
223
+ } = context.options[0] || {};
224
+
225
+ // `@inheritDoc` can be used as inline tag with TSDoc/typedoc: https://typedoc.org/documents/Tags.__inheritDoc_.html
226
+ if (utils.getInlineTags().some(({
227
+ tag,
228
+ }) => {
229
+ return [
230
+ // Typdoc
231
+ 'include', 'includeCode',
232
+ // TSDoc
233
+ 'inheritDoc', 'inheritdoc',
234
+ 'label',
235
+ ].includes(tag);
236
+ })) {
237
+ return;
238
+ }
239
+
240
+ const abbreviationsRegex = abbreviations.length ?
241
+ new RegExp('\\b' + abbreviations.map((abbreviation) => {
242
+ return escapeStringRegexp(abbreviation.replaceAll(/\.$/gv, '') + '.');
243
+ }).join('|') + '(?:$|\\s)', 'gv') :
244
+ '';
245
+
246
+ let {
247
+ description,
248
+ } = utils.getDescription();
249
+
250
+ const indices = [
251
+ ...description.matchAll(/```[\s\S]*```/gv),
252
+ ].map((match) => {
253
+ const {
254
+ index,
255
+ } = match;
256
+ const [
257
+ {
258
+ length,
259
+ },
260
+ ] = match;
261
+ return {
262
+ index,
263
+ length,
264
+ };
265
+ }).toReversed();
266
+
267
+ for (const {
268
+ index,
269
+ length,
270
+ } of indices) {
271
+ description = description.slice(0, index) +
272
+ description.slice(/** @type {import('../iterateJsdoc.js').Integer} */ (
273
+ index
274
+ ) + length);
275
+ }
276
+
277
+ if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {
278
+ line: jsdoc.source[0].number + 1,
279
+ }, newlineBeforeCapsAssumesBadSentenceEnd)) {
280
+ return;
281
+ }
282
+
283
+ utils.forEachPreferredTag('description', (matchingJsdocTag) => {
284
+ const desc = `${matchingJsdocTag.name} ${utils.getTagDescription(matchingJsdocTag)}`.trim();
285
+ validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, matchingJsdocTag, newlineBeforeCapsAssumesBadSentenceEnd);
286
+ }, true);
287
+
288
+ const {
289
+ tagsWithNames,
290
+ } = utils.getTagsByType(jsdoc.tags);
291
+ const tagsWithoutNames = utils.filterTags(({
292
+ tag: tagName,
293
+ }) => {
294
+ return otherDescriptiveTags.has(tagName) ||
295
+ utils.hasOptionTag(tagName) && !tagsWithNames.some(({
296
+ tag,
297
+ }) => {
298
+ // If user accidentally adds tags with names (or like `returns`
299
+ // get parsed as having names), do not add to this list
300
+ return tag === tagName;
301
+ });
302
+ });
303
+
304
+ tagsWithNames.some((tag) => {
305
+ const desc = /** @type {string} */ (
306
+ utils.getTagDescription(tag)
307
+ ).replace(/^- /v, '').trimEnd();
308
+
309
+ return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);
310
+ });
311
+
312
+ tagsWithoutNames.some((tag) => {
313
+ const desc = `${tag.name} ${utils.getTagDescription(tag)}`.trim();
314
+
315
+ return validateDescription(desc, report, jsdocNode, abbreviationsRegex, sourceCode, tag, newlineBeforeCapsAssumesBadSentenceEnd);
316
+ });
317
+ }, {
318
+ iterateAllJsdocs: true,
319
+ meta: {
320
+ docs: {
321
+ description: 'Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences.',
322
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description-complete-sentence.md#repos-sticky-header',
323
+ },
324
+ fixable: 'code',
325
+ schema: [
326
+ {
327
+ additionalProperties: false,
328
+ properties: {
329
+ abbreviations: {
330
+ description: `You can provide an \`abbreviations\` options array to avoid such strings of text
331
+ being treated as sentence endings when followed by dots. The \`.\` is not
332
+ necessary at the end of the array items.`,
333
+ items: {
334
+ type: 'string',
335
+ },
336
+ type: 'array',
337
+ },
338
+ newlineBeforeCapsAssumesBadSentenceEnd: {
339
+ description: `When \`false\` (the new default), we will not assume capital letters after
340
+ newlines are an incorrect way to end the sentence (they may be proper
341
+ nouns, for example).`,
342
+ type: 'boolean',
343
+ },
344
+ tags: {
345
+ description: `If you want additional tags to be checked for their descriptions, you may
346
+ add them within this option.
347
+
348
+ \`\`\`js
349
+ {
350
+ 'jsdoc/require-description-complete-sentence': ['error', {
351
+ tags: ['see', 'copyright']
352
+ }]
353
+ }
354
+ \`\`\`
355
+
356
+ The tags \`@param\`/\`@arg\`/\`@argument\` and \`@property\`/\`@prop\` will be properly
357
+ parsed to ensure that the checked "description" text includes only the text
358
+ after the name.
359
+
360
+ All other tags will treat the text following the tag name, a space, and
361
+ an optional curly-bracketed type expression (and another space) as part of
362
+ its "description" (e.g., for \`@returns {someType} some description\`, the
363
+ description is \`some description\` while for \`@some-tag xyz\`, the description
364
+ is \`xyz\`).`,
365
+ items: {
366
+ type: 'string',
367
+ },
368
+ type: 'array',
369
+ },
370
+ },
371
+ type: 'object',
372
+ },
373
+ ],
374
+ type: 'suggestion',
375
+ },
376
+ });
@@ -0,0 +1,143 @@
1
+ import iterateJsdoc from '../iterateJsdoc.js';
2
+
3
+ export default iterateJsdoc(({
4
+ context,
5
+ jsdoc,
6
+ report,
7
+ utils,
8
+ }) => {
9
+ if (utils.avoidDocs()) {
10
+ return;
11
+ }
12
+
13
+ const {
14
+ enableFixer = true,
15
+ exemptNoArguments = false,
16
+ } = context.options[0] || {};
17
+
18
+ const targetTagName = 'example';
19
+
20
+ const functionExamples = jsdoc.tags.filter(({
21
+ tag,
22
+ }) => {
23
+ return tag === targetTagName;
24
+ });
25
+
26
+ if (!functionExamples.length) {
27
+ if (exemptNoArguments && utils.isIteratingFunctionOrVariable() &&
28
+ !utils.hasParams()
29
+ ) {
30
+ return;
31
+ }
32
+
33
+ utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {
34
+ if (enableFixer) {
35
+ utils.addTag(targetTagName);
36
+ }
37
+ });
38
+
39
+ return;
40
+ }
41
+
42
+ for (const example of functionExamples) {
43
+ const exampleContent = `${example.name} ${utils.getTagDescription(example)}`
44
+ .trim()
45
+ .split('\n')
46
+ .filter(Boolean);
47
+
48
+ if (!exampleContent.length) {
49
+ report(`Missing JSDoc @${targetTagName} description.`, null, example);
50
+ }
51
+ }
52
+ }, {
53
+ contextDefaults: true,
54
+ meta: {
55
+ docs: {
56
+ description: 'Requires that all functions (and potentially other contexts) have examples.',
57
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-example.md#repos-sticky-header',
58
+ },
59
+ fixable: 'code',
60
+ schema: [
61
+ {
62
+ additionalProperties: false,
63
+ properties: {
64
+ checkConstructors: {
65
+ default: true,
66
+ description: `A value indicating whether \`constructor\`s should be checked.
67
+ Defaults to \`true\`.`,
68
+ type: 'boolean',
69
+ },
70
+ checkGetters: {
71
+ default: false,
72
+ description: 'A value indicating whether getters should be checked. Defaults to `false`.',
73
+ type: 'boolean',
74
+ },
75
+ checkSetters: {
76
+ default: false,
77
+ description: 'A value indicating whether setters should be checked. Defaults to `false`.',
78
+ type: 'boolean',
79
+ },
80
+ contexts: {
81
+ description: `Set this to an array of strings representing the AST context (or an object with
82
+ optional \`context\` and \`comment\` properties) where you wish the rule to be applied.
83
+ (e.g., \`ClassDeclaration\` for ES6 classes).
84
+
85
+ \`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
86
+
87
+ Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
88
+ \`FunctionExpression\`). Set to \`"any"\` if you want the rule to apply to any
89
+ JSDoc block throughout your files.
90
+
91
+ See the ["AST and Selectors"](../#advanced-ast-and-selectors)
92
+ section of our Advanced docs for more on the expected format.`,
93
+ items: {
94
+ anyOf: [
95
+ {
96
+ type: 'string',
97
+ },
98
+ {
99
+ additionalProperties: false,
100
+ properties: {
101
+ comment: {
102
+ type: 'string',
103
+ },
104
+ context: {
105
+ type: 'string',
106
+ },
107
+ },
108
+ type: 'object',
109
+ },
110
+ ],
111
+ },
112
+ type: 'array',
113
+ },
114
+ enableFixer: {
115
+ default: true,
116
+ description: `A boolean on whether to enable the fixer (which adds an empty \`@example\` block).
117
+ Defaults to \`true\`.`,
118
+ type: 'boolean',
119
+ },
120
+ exemptedBy: {
121
+ description: `Array of tags (e.g., \`['type']\`) whose presence on the document
122
+ block avoids the need for an \`@example\`. Defaults to an array with
123
+ \`inheritdoc\`. If you set this array, it will overwrite the default,
124
+ so be sure to add back \`inheritdoc\` if you wish its presence to cause
125
+ exemption of the rule.`,
126
+ items: {
127
+ type: 'string',
128
+ },
129
+ type: 'array',
130
+ },
131
+ exemptNoArguments: {
132
+ default: false,
133
+ description: `Boolean to indicate that no-argument functions should not be reported for
134
+ missing \`@example\` declarations.`,
135
+ type: 'boolean',
136
+ },
137
+ },
138
+ type: 'object',
139
+ },
140
+ ],
141
+ type: 'suggestion',
142
+ },
143
+ });