@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,772 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn
11
+ */
12
+
13
+ /**
14
+ * @param {string[]} desiredRoots
15
+ * @param {number} currentIndex
16
+ * @returns {RootNamerReturn}
17
+ */
18
+ const rootNamer = (desiredRoots, currentIndex) => {
19
+ /** @type {string} */
20
+ let name;
21
+ let idx = currentIndex;
22
+ const incremented = desiredRoots.length <= 1;
23
+ if (incremented) {
24
+ const base = desiredRoots[0];
25
+ const suffix = idx++;
26
+ name = `${base}${suffix}`;
27
+ } else {
28
+ name = /** @type {string} */desiredRoots.shift();
29
+ }
30
+ return [name, incremented, () => {
31
+ return rootNamer(desiredRoots, idx);
32
+ }];
33
+ };
34
+
35
+ /* eslint-disable complexity -- Temporary */
36
+ var _default = exports.default = (0, _iterateJsdoc.default)(({
37
+ context,
38
+ jsdoc,
39
+ node,
40
+ utils
41
+ }) => {
42
+ /* eslint-enable complexity -- Temporary */
43
+ if (utils.avoidDocs()) {
44
+ return;
45
+ }
46
+
47
+ // Param type is specified by type in @type
48
+ if (utils.hasTag('type')) {
49
+ return;
50
+ }
51
+ const {
52
+ autoIncrementBase = 0,
53
+ checkDestructured = true,
54
+ checkDestructuredRoots = true,
55
+ checkRestProperty = false,
56
+ checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',
57
+ enableFixer = true,
58
+ enableRestElementFixer = true,
59
+ enableRootFixer = true,
60
+ ignoreWhenAllParamsMissing = false,
61
+ interfaceExemptsParamsCheck = false,
62
+ unnamedRootBase = ['root'],
63
+ useDefaultObjectProperties = false
64
+ } = context.options[0] || {};
65
+ if (interfaceExemptsParamsCheck && node && node.parent?.type === 'VariableDeclarator' && 'typeAnnotation' in node.parent.id && node.parent.id.typeAnnotation) {
66
+ return;
67
+ }
68
+ const preferredTagName = /** @type {string} */utils.getPreferredTagName({
69
+ tagName: 'param'
70
+ });
71
+ if (!preferredTagName) {
72
+ return;
73
+ }
74
+ const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties, interfaceExemptsParamsCheck);
75
+ if (!functionParameterNames.length) {
76
+ return;
77
+ }
78
+ const jsdocParameterNames =
79
+ /**
80
+ * @type {{
81
+ * idx: import('../iterateJsdoc.js').Integer;
82
+ * name: string;
83
+ * type: string;
84
+ * }[]}
85
+ */
86
+ utils.getJsdocTagsDeep(preferredTagName);
87
+ if (ignoreWhenAllParamsMissing && !jsdocParameterNames.length) {
88
+ return;
89
+ }
90
+ const shallowJsdocParameterNames = jsdocParameterNames.filter(tag => {
91
+ return !tag.name.includes('.');
92
+ }).map((tag, idx) => {
93
+ return {
94
+ ...tag,
95
+ idx
96
+ };
97
+ });
98
+ const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);
99
+
100
+ /**
101
+ * @type {{
102
+ * functionParameterIdx: import('../iterateJsdoc.js').Integer,
103
+ * functionParameterName: string,
104
+ * inc: boolean|undefined,
105
+ * remove?: true,
106
+ * type?: string|undefined
107
+ * }[]}
108
+ */
109
+ const missingTags = [];
110
+ const flattenedRoots = utils.flattenRoots(functionParameterNames).names;
111
+
112
+ /**
113
+ * @type {{
114
+ * [key: string]: import('../iterateJsdoc.js').Integer
115
+ * }}
116
+ */
117
+ const paramIndex = {};
118
+
119
+ /**
120
+ * @param {string} cur
121
+ * @returns {boolean}
122
+ */
123
+ const hasParamIndex = cur => {
124
+ return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;
125
+ };
126
+
127
+ /**
128
+ *
129
+ * @param {string|number|undefined} cur
130
+ * @returns {import('../iterateJsdoc.js').Integer}
131
+ */
132
+ const getParamIndex = cur => {
133
+ return paramIndex[utils.dropPathSegmentQuotes(String(cur))];
134
+ };
135
+
136
+ /**
137
+ *
138
+ * @param {string} cur
139
+ * @param {import('../iterateJsdoc.js').Integer} idx
140
+ * @returns {void}
141
+ */
142
+ const setParamIndex = (cur, idx) => {
143
+ paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;
144
+ };
145
+ for (const [idx, cur] of flattenedRoots.entries()) {
146
+ setParamIndex(cur, idx);
147
+ }
148
+
149
+ /**
150
+ *
151
+ * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
152
+ * newAdd?: boolean
153
+ * })[]} jsdocTags
154
+ * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams
155
+ * @returns {{
156
+ * foundIndex: import('../iterateJsdoc.js').Integer,
157
+ * tagLineCount: import('../iterateJsdoc.js').Integer,
158
+ * }}
159
+ */
160
+ const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
161
+ // Get the parameters that come after the current index in the flattened order
162
+ const remainingFlattenedRoots = flattenedRoots.slice((indexAtFunctionParams || 0) + 1);
163
+
164
+ // Find the first existing tag that comes after the current parameter in the flattened order
165
+ const foundIndex = jsdocTags.findIndex(({
166
+ name,
167
+ newAdd
168
+ }) => {
169
+ if (newAdd) {
170
+ return false;
171
+ }
172
+
173
+ // Check if the tag name matches any of the remaining flattened roots
174
+ return remainingFlattenedRoots.some(flattenedRoot => {
175
+ // The flattened roots don't have the root prefix (e.g., "bar", "bar.baz")
176
+ // but JSDoc tags do (e.g., "root0", "root0.bar", "root0.bar.baz")
177
+ // So we need to check if the tag name ends with the flattened root
178
+
179
+ // Check if tag name ends with ".<flattenedRoot>"
180
+ if (name.endsWith(`.${flattenedRoot}`)) {
181
+ return true;
182
+ }
183
+
184
+ // Also check if tag name exactly matches the flattenedRoot
185
+ // (for single-level params)
186
+ if (name === flattenedRoot) {
187
+ return true;
188
+ }
189
+ return false;
190
+ });
191
+ });
192
+ const tags = foundIndex > -1 ? jsdocTags.slice(0, foundIndex) : jsdocTags.filter(({
193
+ tag
194
+ }) => {
195
+ return tag === preferredTagName;
196
+ });
197
+ let tagLineCount = 0;
198
+ for (const {
199
+ source
200
+ } of tags) {
201
+ for (const {
202
+ tokens: {
203
+ end
204
+ }
205
+ } of source) {
206
+ if (!end) {
207
+ tagLineCount++;
208
+ }
209
+ }
210
+ }
211
+ return {
212
+ foundIndex,
213
+ tagLineCount
214
+ };
215
+ };
216
+ let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);
217
+ const thisOffset = functionParameterNames[0] === 'this' ? 1 : 0;
218
+ for (const [functionParameterIdx, functionParameterName] of functionParameterNames.entries()) {
219
+ let inc;
220
+ if (Array.isArray(functionParameterName)) {
221
+ const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset];
222
+
223
+ /** @type {string} */
224
+ let rootName;
225
+ if (functionParameterName[0]) {
226
+ rootName = functionParameterName[0];
227
+ } else if (matchedJsdoc && matchedJsdoc.name) {
228
+ rootName = matchedJsdoc.name;
229
+ if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {
230
+ continue;
231
+ }
232
+ } else {
233
+ rootName = nextRootName;
234
+ inc = incremented;
235
+ }
236
+ [nextRootName, incremented, namer] = namer();
237
+ const {
238
+ hasPropertyRest,
239
+ hasRestElement,
240
+ names,
241
+ rests
242
+ } =
243
+ /**
244
+ * @type {import('../jsdocUtils.js').FlattendRootInfo & {
245
+ * annotationParamName?: string | undefined;
246
+ * }}
247
+ */
248
+ functionParameterName[1];
249
+ const notCheckingNames = [];
250
+ if (!enableRestElementFixer && hasRestElement) {
251
+ continue;
252
+ }
253
+ if (!checkDestructuredRoots) {
254
+ continue;
255
+ }
256
+ for (const [idx, paramName] of names.entries()) {
257
+ // Add root if the root name is not in the docs (and is not already
258
+ // in the tags to be fixed)
259
+ if (!jsdocParameterNames.find(({
260
+ name
261
+ }) => {
262
+ return name === rootName;
263
+ }) && !missingTags.find(({
264
+ functionParameterName: fpn
265
+ }) => {
266
+ return fpn === rootName;
267
+ })) {
268
+ const emptyParamIdx = jsdocParameterNames.findIndex(({
269
+ name
270
+ }) => {
271
+ return !name;
272
+ });
273
+ if (emptyParamIdx > -1) {
274
+ missingTags.push({
275
+ functionParameterIdx: emptyParamIdx,
276
+ functionParameterName: rootName,
277
+ inc,
278
+ remove: true
279
+ });
280
+ } else {
281
+ missingTags.push({
282
+ functionParameterIdx: hasParamIndex(rootName) ? getParamIndex(rootName) : getParamIndex(paramName),
283
+ functionParameterName: rootName,
284
+ inc
285
+ });
286
+ }
287
+ }
288
+ if (!checkDestructured) {
289
+ continue;
290
+ }
291
+ if (!checkRestProperty && rests[idx]) {
292
+ continue;
293
+ }
294
+ const fullParamName = `${rootName}.${paramName}`;
295
+ const notCheckingName = jsdocParameterNames.find(({
296
+ name,
297
+ type: paramType
298
+ }) => {
299
+ return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';
300
+ });
301
+ if (notCheckingName !== undefined) {
302
+ notCheckingNames.push(notCheckingName.name);
303
+ }
304
+ if (notCheckingNames.find(name => {
305
+ return fullParamName.startsWith(name);
306
+ })) {
307
+ continue;
308
+ }
309
+ if (jsdocParameterNames && !jsdocParameterNames.find(({
310
+ name
311
+ }) => {
312
+ return utils.comparePaths(name)(fullParamName);
313
+ })) {
314
+ missingTags.push({
315
+ functionParameterIdx: getParamIndex(functionParameterName[0] ? fullParamName : paramName),
316
+ functionParameterName: fullParamName,
317
+ inc,
318
+ type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined
319
+ });
320
+ }
321
+ }
322
+ continue;
323
+ }
324
+
325
+ /** @type {string} */
326
+ let funcParamName;
327
+ let type;
328
+ if (typeof functionParameterName === 'object') {
329
+ if (!enableRestElementFixer && functionParameterName.restElement) {
330
+ continue;
331
+ }
332
+ funcParamName = /** @type {string} */functionParameterName.name;
333
+ type = '{...any}';
334
+ } else {
335
+ funcParamName = /** @type {string} */functionParameterName;
336
+ }
337
+ if (jsdocParameterNames && !jsdocParameterNames.find(({
338
+ name
339
+ }) => {
340
+ return name === funcParamName;
341
+ }) && funcParamName !== 'this') {
342
+ missingTags.push({
343
+ functionParameterIdx: getParamIndex(funcParamName),
344
+ functionParameterName: funcParamName,
345
+ inc,
346
+ type
347
+ });
348
+ }
349
+ }
350
+
351
+ /**
352
+ *
353
+ * @param {{
354
+ * functionParameterIdx: import('../iterateJsdoc.js').Integer,
355
+ * functionParameterName: string,
356
+ * remove?: true,
357
+ * inc?: boolean,
358
+ * type?: string
359
+ * }} cfg
360
+ */
361
+ const fix = ({
362
+ functionParameterIdx,
363
+ functionParameterName,
364
+ inc,
365
+ remove,
366
+ type
367
+ }) => {
368
+ if (inc && !enableRootFixer) {
369
+ return;
370
+ }
371
+
372
+ /**
373
+ *
374
+ * @param {import('../iterateJsdoc.js').Integer} tagIndex
375
+ * @param {import('../iterateJsdoc.js').Integer} sourceIndex
376
+ * @param {import('../iterateJsdoc.js').Integer} spliceCount
377
+ * @returns {void}
378
+ */
379
+ const createTokens = (tagIndex, sourceIndex, spliceCount) => {
380
+ // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);
381
+ const tokens = {
382
+ number: sourceIndex + 1,
383
+ source: '',
384
+ tokens: {
385
+ delimiter: '*',
386
+ description: '',
387
+ end: '',
388
+ lineEnd: '',
389
+ name: functionParameterName,
390
+ newAdd: true,
391
+ postDelimiter: ' ',
392
+ postName: '',
393
+ postTag: ' ',
394
+ postType: type ? ' ' : '',
395
+ start: jsdoc.source[sourceIndex].tokens.start,
396
+ tag: `@${preferredTagName}`,
397
+ type: type ?? ''
398
+ }
399
+ };
400
+
401
+ /**
402
+ * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
403
+ * newAdd?: true
404
+ * })[]}
405
+ */
406
+ jsdoc.tags.splice(tagIndex, spliceCount, {
407
+ description: '',
408
+ inlineTags: [],
409
+ name: functionParameterName,
410
+ newAdd: true,
411
+ optional: false,
412
+ problems: [],
413
+ source: [tokens],
414
+ tag: preferredTagName,
415
+ type: type ?? ''
416
+ });
417
+ const firstNumber = jsdoc.source[0].number;
418
+ jsdoc.source.splice(sourceIndex, spliceCount, tokens);
419
+ for (const [idx, src] of jsdoc.source.slice(sourceIndex).entries()) {
420
+ src.number = firstNumber + sourceIndex + idx;
421
+ }
422
+ };
423
+ const offset = jsdoc.source.findIndex(({
424
+ tokens: {
425
+ end,
426
+ tag
427
+ }
428
+ }) => {
429
+ return tag || end;
430
+ });
431
+ if (remove) {
432
+ createTokens(functionParameterIdx, offset + functionParameterIdx, 1);
433
+ } else {
434
+ const {
435
+ foundIndex,
436
+ tagLineCount: expectedIdx
437
+ } = findExpectedIndex(jsdoc.tags, functionParameterIdx);
438
+ const firstParamLine = jsdoc.source.findIndex(({
439
+ tokens
440
+ }) => {
441
+ return tokens.tag === `@${preferredTagName}`;
442
+ });
443
+ const baseOffset = foundIndex > -1 || firstParamLine === -1 ? offset : firstParamLine;
444
+ createTokens(expectedIdx, baseOffset + expectedIdx, 0);
445
+ }
446
+ };
447
+
448
+ /**
449
+ * @returns {void}
450
+ */
451
+ const fixer = () => {
452
+ for (const missingTag of missingTags) {
453
+ fix(missingTag);
454
+ }
455
+ };
456
+ if (missingTags.length && jsdoc.source.length === 1) {
457
+ utils.makeMultiline();
458
+ }
459
+ for (const {
460
+ functionParameterName
461
+ } of missingTags) {
462
+ utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, enableFixer ? fixer : null);
463
+ }
464
+ }, {
465
+ contextDefaults: true,
466
+ meta: {
467
+ docs: {
468
+ description: 'Requires that all function parameters are documented with a `@param` tag.',
469
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header'
470
+ },
471
+ fixable: 'code',
472
+ schema: [{
473
+ additionalProperties: false,
474
+ properties: {
475
+ autoIncrementBase: {
476
+ default: 0,
477
+ description: `Numeric to indicate the number at which to begin auto-incrementing roots.
478
+ Defaults to \`0\`.`,
479
+ type: 'integer'
480
+ },
481
+ checkConstructors: {
482
+ default: true,
483
+ description: `A value indicating whether \`constructor\`s should be checked. Defaults to
484
+ \`true\`.`,
485
+ type: 'boolean'
486
+ },
487
+ checkDestructured: {
488
+ default: true,
489
+ description: 'Whether to require destructured properties. Defaults to `true`.',
490
+ type: 'boolean'
491
+ },
492
+ checkDestructuredRoots: {
493
+ default: true,
494
+ description: `Whether to check the existence of a corresponding \`@param\` for root objects
495
+ of destructured properties (e.g., that for \`function ({a, b}) {}\`, that there
496
+ is something like \`@param myRootObj\` defined that can correspond to
497
+ the \`{a, b}\` object parameter).
498
+
499
+ If \`checkDestructuredRoots\` is \`false\`, \`checkDestructured\` will also be
500
+ implied to be \`false\` (i.e., the inside of the roots will not be checked
501
+ either, e.g., it will also not complain if \`a\` or \`b\` do not have their own
502
+ documentation). Defaults to \`true\`.`,
503
+ type: 'boolean'
504
+ },
505
+ checkGetters: {
506
+ default: false,
507
+ description: 'A value indicating whether getters should be checked. Defaults to `false`.',
508
+ type: 'boolean'
509
+ },
510
+ checkRestProperty: {
511
+ default: false,
512
+ description: `If set to \`true\`, will report (and add fixer insertions) for missing rest
513
+ properties. Defaults to \`false\`.
514
+
515
+ If set to \`true\`, note that you can still document the subproperties of the
516
+ rest property using other jsdoc features, e.g., \`@typedef\`:
517
+
518
+ \`\`\`js
519
+ /**
520
+ * @typedef ExtraOptions
521
+ * @property innerProp1
522
+ * @property innerProp2
523
+ */
524
+
525
+ /**
526
+ * @param cfg
527
+ * @param cfg.num
528
+ * @param {ExtraOptions} extra
529
+ */
530
+ function quux ({num, ...extra}) {
531
+ }
532
+ \`\`\`
533
+
534
+ Setting this option to \`false\` (the default) may be useful in cases where
535
+ you already have separate \`@param\` definitions for each of the properties
536
+ within the rest property.
537
+
538
+ For example, with the option disabled, this will not give an error despite
539
+ \`extra\` not having any definition:
540
+
541
+ \`\`\`js
542
+ /**
543
+ * @param cfg
544
+ * @param cfg.num
545
+ */
546
+ function quux ({num, ...extra}) {
547
+ }
548
+ \`\`\`
549
+
550
+ Nor will this:
551
+
552
+ \`\`\`js
553
+ /**
554
+ * @param cfg
555
+ * @param cfg.num
556
+ * @param cfg.innerProp1
557
+ * @param cfg.innerProp2
558
+ */
559
+ function quux ({num, ...extra}) {
560
+ }
561
+ \`\`\``,
562
+ type: 'boolean'
563
+ },
564
+ checkSetters: {
565
+ default: false,
566
+ description: 'A value indicating whether setters should be checked. Defaults to `false`.',
567
+ type: 'boolean'
568
+ },
569
+ checkTypesPattern: {
570
+ description: `When one specifies a type, unless it is of a generic type, like \`object\`
571
+ or \`array\`, it may be considered unnecessary to have that object's
572
+ destructured components required, especially where generated docs will
573
+ link back to the specified type. For example:
574
+
575
+ \`\`\`js
576
+ /**
577
+ * @param {SVGRect} bbox - a SVGRect
578
+ */
579
+ export const bboxToObj = function ({x, y, width, height}) {
580
+ return {x, y, width, height};
581
+ };
582
+ \`\`\`
583
+
584
+ By default \`checkTypesPattern\` is set to
585
+ \`/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/v\`,
586
+ meaning that destructuring will be required only if the type of the \`@param\`
587
+ (the text between curly brackets) is a match for "Object" or "Array" (with or
588
+ without initial caps), "PlainObject", or "GenericObject", "GenericArray" (or
589
+ if no type is present). So in the above example, the lack of a match will
590
+ mean that no complaint will be given about the undocumented destructured
591
+ parameters.
592
+
593
+ Note that the \`/\` delimiters are optional, but necessary to add flags.
594
+
595
+ Defaults to using (only) the \`v\` flag, so to add your own flags, encapsulate
596
+ your expression as a string, but like a literal, e.g., \`/^object$/vi\`.
597
+
598
+ You could set this regular expression to a more expansive list, or you
599
+ could restrict it such that even types matching those strings would not
600
+ need destructuring.`,
601
+ type: 'string'
602
+ },
603
+ contexts: {
604
+ description: `Set this to an array of strings representing the AST context (or an object with
605
+ optional \`context\` and \`comment\` properties) where you wish the rule to be applied.
606
+
607
+ \`context\` defaults to \`any\` and \`comment\` defaults to no specific comment context.
608
+
609
+ Overrides the default contexts (\`ArrowFunctionExpression\`, \`FunctionDeclaration\`,
610
+ \`FunctionExpression\`). May be useful for adding such as
611
+ \`TSMethodSignature\` in TypeScript or restricting the contexts
612
+ which are checked.
613
+
614
+ See the ["AST and Selectors"](../#advanced-ast-and-selectors)
615
+ section of our Advanced docs for more on the expected format.`,
616
+ items: {
617
+ anyOf: [{
618
+ type: 'string'
619
+ }, {
620
+ additionalProperties: false,
621
+ properties: {
622
+ comment: {
623
+ type: 'string'
624
+ },
625
+ context: {
626
+ type: 'string'
627
+ }
628
+ },
629
+ type: 'object'
630
+ }]
631
+ },
632
+ type: 'array'
633
+ },
634
+ enableFixer: {
635
+ description: 'Whether to enable the fixer. Defaults to `true`.',
636
+ type: 'boolean'
637
+ },
638
+ enableRestElementFixer: {
639
+ description: `Whether to enable the rest element fixer.
640
+
641
+ The fixer will automatically report/insert
642
+ [JSDoc repeatable parameters](https://jsdoc.app/tags-param.html#multiple-types-and-repeatable-parameters)
643
+ if missing.
644
+
645
+ \`\`\`js
646
+ /**
647
+ * @param {GenericArray} cfg
648
+ * @param {number} cfg."0"
649
+ */
650
+ function baar ([a, ...extra]) {
651
+ //
652
+ }
653
+ \`\`\`
654
+
655
+ ...becomes:
656
+
657
+ \`\`\`js
658
+ /**
659
+ * @param {GenericArray} cfg
660
+ * @param {number} cfg."0"
661
+ * @param {...any} cfg."1"
662
+ */
663
+ function baar ([a, ...extra]) {
664
+ //
665
+ }
666
+ \`\`\`
667
+
668
+ Note that the type \`any\` is included since we don't know of any specific
669
+ type to use.
670
+
671
+ Defaults to \`true\`.`,
672
+ type: 'boolean'
673
+ },
674
+ enableRootFixer: {
675
+ description: `Whether to enable the auto-adding of incrementing roots.
676
+
677
+ The default behavior of \`true\` is for "root" to be auto-inserted for missing
678
+ roots, followed by a 0-based auto-incrementing number.
679
+
680
+ So for:
681
+
682
+ \`\`\`js
683
+ function quux ({foo}, {bar}, {baz}) {
684
+ }
685
+ \`\`\`
686
+
687
+ ...the default JSDoc that would be added if the fixer is enabled would be:
688
+
689
+ \`\`\`js
690
+ /**
691
+ * @param root0
692
+ * @param root0.foo
693
+ * @param root1
694
+ * @param root1.bar
695
+ * @param root2
696
+ * @param root2.baz
697
+ */
698
+ \`\`\`
699
+
700
+ Has no effect if \`enableFixer\` is set to \`false\`.`,
701
+ type: 'boolean'
702
+ },
703
+ exemptedBy: {
704
+ description: `Array of tags (e.g., \`['type']\`) whose presence on the document block
705
+ avoids the need for a \`@param\`. Defaults to an array with
706
+ \`inheritdoc\`. If you set this array, it will overwrite the default,
707
+ so be sure to add back \`inheritdoc\` if you wish its presence to cause
708
+ exemption of the rule.`,
709
+ items: {
710
+ type: 'string'
711
+ },
712
+ type: 'array'
713
+ },
714
+ ignoreWhenAllParamsMissing: {
715
+ description: `Set to \`true\` to ignore reporting when all params are missing. Defaults to
716
+ \`false\`.`,
717
+ type: 'boolean'
718
+ },
719
+ interfaceExemptsParamsCheck: {
720
+ description: `Set if you wish TypeScript interfaces to exempt checks for the existence of
721
+ \`@param\`'s.
722
+
723
+ Will check for a type defining the function itself (on a variable
724
+ declaration) or if there is a single destructured object with a type.
725
+ Defaults to \`false\`.`,
726
+ type: 'boolean'
727
+ },
728
+ unnamedRootBase: {
729
+ description: `An array of root names to use in the fixer when roots are missing. Defaults
730
+ to \`['root']\`. Note that only when all items in the array besides the last
731
+ are exhausted will auto-incrementing occur. So, with
732
+ \`unnamedRootBase: ['arg', 'config']\`, the following:
733
+
734
+ \`\`\`js
735
+ function quux ({foo}, [bar], {baz}) {
736
+ }
737
+ \`\`\`
738
+
739
+ ...will get the following JSDoc block added:
740
+
741
+ \`\`\`js
742
+ /**
743
+ * @param arg
744
+ * @param arg.foo
745
+ * @param config0
746
+ * @param config0."0" (\`bar\`)
747
+ * @param config1
748
+ * @param config1.baz
749
+ */
750
+ \`\`\``,
751
+ items: {
752
+ type: 'string'
753
+ },
754
+ type: 'array'
755
+ },
756
+ useDefaultObjectProperties: {
757
+ description: `Set to \`true\` if you wish to expect documentation of properties on objects
758
+ supplied as default values. Defaults to \`false\`.`,
759
+ type: 'boolean'
760
+ }
761
+ },
762
+ type: 'object'
763
+ }],
764
+ type: 'suggestion'
765
+ },
766
+ // We cannot cache comment nodes as the contexts may recur with the
767
+ // same comment node but a different JS node, and we may need the different
768
+ // JS node to ensure we iterate its context
769
+ noTracking: true
770
+ });
771
+ module.exports = exports.default;
772
+ //# sourceMappingURL=requireParam.cjs.map