eslint-plugin-jsdoc 52.0.3 → 52.0.4

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 (357) hide show
  1. package/dist/WarnSettings.cjs +35 -18
  2. package/dist/WarnSettings.cjs.map +1 -1
  3. package/dist/alignTransform.cjs +305 -224
  4. package/dist/alignTransform.cjs.map +1 -1
  5. package/dist/defaultTagOrder.cjs +43 -132
  6. package/dist/defaultTagOrder.cjs.map +1 -1
  7. package/dist/exportParser.cjs +696 -478
  8. package/dist/exportParser.cjs.map +1 -1
  9. package/dist/generateRule.cjs +242 -0
  10. package/dist/generateRule.cjs.map +1 -0
  11. package/dist/getDefaultTagStructureForMode.cjs +288 -184
  12. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  13. package/dist/getJsdocProcessorPlugin.cjs +550 -364
  14. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  15. package/dist/getJsdocProcessorPlugin.d.ts +65 -68
  16. package/dist/getJsdocProcessorPlugin.d.ts.map +1 -1
  17. package/dist/index.cjs +383 -398
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.ts +6 -11
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/iterateJsdoc.cjs +1988 -1528
  22. package/dist/iterateJsdoc.cjs.map +1 -1
  23. package/dist/iterateJsdoc.d.ts +349 -358
  24. package/dist/iterateJsdoc.d.ts.map +1 -1
  25. package/dist/jsdocUtils.cjs +1376 -1009
  26. package/dist/jsdocUtils.cjs.map +1 -1
  27. package/dist/rules/checkAccess.cjs +36 -29
  28. package/dist/rules/checkAccess.cjs.map +1 -1
  29. package/dist/rules/checkAlignment.cjs +54 -41
  30. package/dist/rules/checkAlignment.cjs.map +1 -1
  31. package/dist/rules/checkExamples.cjs +484 -327
  32. package/dist/rules/checkExamples.cjs.map +1 -1
  33. package/dist/rules/checkIndentation.cjs +65 -50
  34. package/dist/rules/checkIndentation.cjs.map +1 -1
  35. package/dist/rules/checkLineAlignment.cjs +311 -220
  36. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  37. package/dist/rules/checkParamNames.cjs +335 -227
  38. package/dist/rules/checkParamNames.cjs.map +1 -1
  39. package/dist/rules/checkPropertyNames.cjs +106 -78
  40. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  41. package/dist/rules/checkSyntax.cjs +34 -21
  42. package/dist/rules/checkSyntax.cjs.map +1 -1
  43. package/dist/rules/checkTagNames.cjs +210 -188
  44. package/dist/rules/checkTagNames.cjs.map +1 -1
  45. package/dist/rules/checkTemplateNames.cjs +178 -121
  46. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  47. package/dist/rules/checkTypes.cjs +385 -291
  48. package/dist/rules/checkTypes.cjs.map +1 -1
  49. package/dist/rules/checkValues.cjs +146 -100
  50. package/dist/rules/checkValues.cjs.map +1 -1
  51. package/dist/rules/convertToJsdocComments.cjs +306 -228
  52. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  53. package/dist/rules/emptyTags.cjs +72 -62
  54. package/dist/rules/emptyTags.cjs.map +1 -1
  55. package/dist/rules/implementsOnClasses.cjs +56 -36
  56. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  57. package/dist/rules/importsAsDependencies.cjs +99 -62
  58. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  59. package/dist/rules/informativeDocs.cjs +142 -105
  60. package/dist/rules/informativeDocs.cjs.map +1 -1
  61. package/dist/rules/linesBeforeBlock.cjs +105 -70
  62. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  63. package/dist/rules/matchDescription.cjs +222 -160
  64. package/dist/rules/matchDescription.cjs.map +1 -1
  65. package/dist/rules/matchName.cjs +128 -73
  66. package/dist/rules/matchName.cjs.map +1 -1
  67. package/dist/rules/multilineBlocks.cjs +352 -235
  68. package/dist/rules/multilineBlocks.cjs.map +1 -1
  69. package/dist/rules/noBadBlocks.cjs +86 -63
  70. package/dist/rules/noBadBlocks.cjs.map +1 -1
  71. package/dist/rules/noBlankBlockDescriptions.cjs +57 -35
  72. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  73. package/dist/rules/noBlankBlocks.cjs +48 -26
  74. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  75. package/dist/rules/noDefaults.cjs +79 -52
  76. package/dist/rules/noDefaults.cjs.map +1 -1
  77. package/dist/rules/noMissingSyntax.cjs +165 -115
  78. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  79. package/dist/rules/noMultiAsterisks.cjs +89 -48
  80. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  81. package/dist/rules/noRestrictedSyntax.cjs +79 -45
  82. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  83. package/dist/rules/noTypes.cjs +80 -59
  84. package/dist/rules/noTypes.cjs.map +1 -1
  85. package/dist/rules/noUndefinedTypes.cjs +388 -297
  86. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  87. package/dist/rules/requireAsteriskPrefix.cjs +159 -108
  88. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  89. package/dist/rules/requireDescription.cjs +129 -89
  90. package/dist/rules/requireDescription.cjs.map +1 -1
  91. package/dist/rules/requireDescriptionCompleteSentence.cjs +262 -201
  92. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  93. package/dist/rules/requireExample.cjs +104 -73
  94. package/dist/rules/requireExample.cjs.map +1 -1
  95. package/dist/rules/requireFileOverview.cjs +129 -75
  96. package/dist/rules/requireFileOverview.cjs.map +1 -1
  97. package/dist/rules/requireHyphenBeforeParamDescription.cjs +133 -85
  98. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  99. package/dist/rules/requireJsdoc.cjs +557 -384
  100. package/dist/rules/requireJsdoc.cjs.map +1 -1
  101. package/dist/rules/requireParam.cjs +526 -336
  102. package/dist/rules/requireParam.cjs.map +1 -1
  103. package/dist/rules/requireParamDescription.cjs +80 -55
  104. package/dist/rules/requireParamDescription.cjs.map +1 -1
  105. package/dist/rules/requireParamName.cjs +50 -32
  106. package/dist/rules/requireParamName.cjs.map +1 -1
  107. package/dist/rules/requireParamType.cjs +80 -55
  108. package/dist/rules/requireParamType.cjs.map +1 -1
  109. package/dist/rules/requireProperty.cjs +42 -31
  110. package/dist/rules/requireProperty.cjs.map +1 -1
  111. package/dist/rules/requirePropertyDescription.cjs +25 -17
  112. package/dist/rules/requirePropertyDescription.cjs.map +1 -1
  113. package/dist/rules/requirePropertyName.cjs +25 -17
  114. package/dist/rules/requirePropertyName.cjs.map +1 -1
  115. package/dist/rules/requirePropertyType.cjs +25 -17
  116. package/dist/rules/requirePropertyType.cjs.map +1 -1
  117. package/dist/rules/requireReturns.cjs +203 -125
  118. package/dist/rules/requireReturns.cjs.map +1 -1
  119. package/dist/rules/requireReturnsCheck.cjs +103 -60
  120. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  121. package/dist/rules/requireReturnsDescription.cjs +54 -39
  122. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  123. package/dist/rules/requireReturnsType.cjs +50 -32
  124. package/dist/rules/requireReturnsType.cjs.map +1 -1
  125. package/dist/rules/requireTemplate.cjs +178 -119
  126. package/dist/rules/requireTemplate.cjs.map +1 -1
  127. package/dist/rules/requireThrows.cjs +95 -61
  128. package/dist/rules/requireThrows.cjs.map +1 -1
  129. package/dist/rules/requireYields.cjs +166 -106
  130. package/dist/rules/requireYields.cjs.map +1 -1
  131. package/dist/rules/requireYieldsCheck.cjs +152 -96
  132. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  133. package/dist/rules/sortTags.cjs +444 -258
  134. package/dist/rules/sortTags.cjs.map +1 -1
  135. package/dist/rules/tagLines.cjs +266 -179
  136. package/dist/rules/tagLines.cjs.map +1 -1
  137. package/dist/rules/textEscaping.cjs +127 -92
  138. package/dist/rules/textEscaping.cjs.map +1 -1
  139. package/dist/rules/validTypes.cjs +265 -252
  140. package/dist/rules/validTypes.cjs.map +1 -1
  141. package/dist/tagNames.cjs +170 -134
  142. package/dist/tagNames.cjs.map +1 -1
  143. package/dist/utils/hasReturnValue.cjs +474 -246
  144. package/dist/utils/hasReturnValue.cjs.map +1 -1
  145. package/package.json +24 -40
  146. package/src/WarnSettings.js +34 -0
  147. package/src/alignTransform.js +358 -0
  148. package/src/defaultTagOrder.js +169 -0
  149. package/src/exportParser.js +978 -0
  150. package/src/getDefaultTagStructureForMode.js +969 -0
  151. package/src/getJsdocProcessorPlugin.js +672 -0
  152. package/src/index.js +530 -0
  153. package/src/iterateJsdoc.js +2518 -0
  154. package/src/jsdocUtils.js +1896 -0
  155. package/src/rules/checkAccess.js +45 -0
  156. package/src/rules/checkAlignment.js +63 -0
  157. package/src/rules/checkExamples.js +589 -0
  158. package/src/rules/checkIndentation.js +75 -0
  159. package/src/rules/checkLineAlignment.js +372 -0
  160. package/src/rules/checkParamNames.js +474 -0
  161. package/src/rules/checkPropertyNames.js +152 -0
  162. package/src/rules/checkSyntax.js +30 -0
  163. package/src/rules/checkTagNames.js +314 -0
  164. package/src/rules/checkTemplateNames.js +204 -0
  165. package/src/rules/checkTypes.js +535 -0
  166. package/src/rules/checkValues.js +248 -0
  167. package/src/rules/convertToJsdocComments.js +398 -0
  168. package/src/rules/emptyTags.js +98 -0
  169. package/src/rules/implementsOnClasses.js +64 -0
  170. package/src/rules/importsAsDependencies.js +133 -0
  171. package/src/rules/informativeDocs.js +189 -0
  172. package/src/rules/linesBeforeBlock.js +134 -0
  173. package/src/rules/matchDescription.js +286 -0
  174. package/src/rules/matchName.js +151 -0
  175. package/src/rules/multilineBlocks.js +493 -0
  176. package/src/rules/noBadBlocks.js +119 -0
  177. package/src/rules/noBlankBlockDescriptions.js +69 -0
  178. package/src/rules/noBlankBlocks.js +53 -0
  179. package/src/rules/noDefaults.js +85 -0
  180. package/src/rules/noMissingSyntax.js +195 -0
  181. package/src/rules/noMultiAsterisks.js +134 -0
  182. package/src/rules/noRestrictedSyntax.js +91 -0
  183. package/src/rules/noTypes.js +93 -0
  184. package/src/rules/noUndefinedTypes.js +543 -0
  185. package/src/rules/requireAsteriskPrefix.js +190 -0
  186. package/src/rules/requireDescription.js +161 -0
  187. package/src/rules/requireDescriptionCompleteSentence.js +335 -0
  188. package/src/rules/requireExample.js +118 -0
  189. package/src/rules/requireFileOverview.js +154 -0
  190. package/src/rules/requireHyphenBeforeParamDescription.js +176 -0
  191. package/src/rules/requireJsdoc.js +743 -0
  192. package/src/rules/requireParam.js +602 -0
  193. package/src/rules/requireParamDescription.js +89 -0
  194. package/src/rules/requireParamName.js +55 -0
  195. package/src/rules/requireParamType.js +89 -0
  196. package/src/rules/requireProperty.js +48 -0
  197. package/src/rules/requirePropertyDescription.js +25 -0
  198. package/src/rules/requirePropertyName.js +25 -0
  199. package/src/rules/requirePropertyType.js +25 -0
  200. package/src/rules/requireReturns.js +238 -0
  201. package/src/rules/requireReturnsCheck.js +145 -0
  202. package/src/rules/requireReturnsDescription.js +59 -0
  203. package/src/rules/requireReturnsType.js +51 -0
  204. package/src/rules/requireTemplate.js +201 -0
  205. package/src/rules/requireThrows.js +111 -0
  206. package/src/rules/requireYields.js +216 -0
  207. package/src/rules/requireYieldsCheck.js +208 -0
  208. package/src/rules/sortTags.js +558 -0
  209. package/src/rules/tagLines.js +359 -0
  210. package/src/rules/textEscaping.js +154 -0
  211. package/src/rules/validTypes.js +401 -0
  212. package/src/tagNames.js +238 -0
  213. package/src/utils/hasReturnValue.js +572 -0
  214. package/dist/WarnSettings.js +0 -20
  215. package/dist/WarnSettings.js.map +0 -1
  216. package/dist/_virtual/rolldown_runtime.cjs +0 -32
  217. package/dist/_virtual/rolldown_runtime.js +0 -11
  218. package/dist/alignTransform.js +0 -241
  219. package/dist/alignTransform.js.map +0 -1
  220. package/dist/defaultTagOrder.js +0 -134
  221. package/dist/defaultTagOrder.js.map +0 -1
  222. package/dist/exportParser.js +0 -518
  223. package/dist/exportParser.js.map +0 -1
  224. package/dist/getDefaultTagStructureForMode.js +0 -188
  225. package/dist/getDefaultTagStructureForMode.js.map +0 -1
  226. package/dist/getJsdocProcessorPlugin.d.cts +0 -70
  227. package/dist/getJsdocProcessorPlugin.d.cts.map +0 -1
  228. package/dist/getJsdocProcessorPlugin.js +0 -383
  229. package/dist/getJsdocProcessorPlugin.js.map +0 -1
  230. package/dist/index.d.cts +0 -22
  231. package/dist/index.d.cts.map +0 -1
  232. package/dist/index.js +0 -425
  233. package/dist/index.js.map +0 -1
  234. package/dist/iterateJsdoc.d.cts +0 -471
  235. package/dist/iterateJsdoc.d.cts.map +0 -1
  236. package/dist/iterateJsdoc.js +0 -1617
  237. package/dist/iterateJsdoc.js.map +0 -1
  238. package/dist/jsdocUtils.js +0 -1123
  239. package/dist/jsdocUtils.js.map +0 -1
  240. package/dist/rules/checkAccess.js +0 -33
  241. package/dist/rules/checkAccess.js.map +0 -1
  242. package/dist/rules/checkAlignment.js +0 -47
  243. package/dist/rules/checkAlignment.js.map +0 -1
  244. package/dist/rules/checkExamples.js +0 -348
  245. package/dist/rules/checkExamples.js.map +0 -1
  246. package/dist/rules/checkIndentation.js +0 -59
  247. package/dist/rules/checkIndentation.js.map +0 -1
  248. package/dist/rules/checkLineAlignment.js +0 -229
  249. package/dist/rules/checkLineAlignment.js.map +0 -1
  250. package/dist/rules/checkParamNames.js +0 -237
  251. package/dist/rules/checkParamNames.js.map +0 -1
  252. package/dist/rules/checkPropertyNames.js +0 -88
  253. package/dist/rules/checkPropertyNames.js.map +0 -1
  254. package/dist/rules/checkSyntax.js +0 -25
  255. package/dist/rules/checkSyntax.js.map +0 -1
  256. package/dist/rules/checkTagNames.js +0 -191
  257. package/dist/rules/checkTagNames.js.map +0 -1
  258. package/dist/rules/checkTemplateNames.js +0 -124
  259. package/dist/rules/checkTemplateNames.js.map +0 -1
  260. package/dist/rules/checkTypes.js +0 -299
  261. package/dist/rules/checkTypes.js.map +0 -1
  262. package/dist/rules/checkValues.js +0 -103
  263. package/dist/rules/checkValues.js.map +0 -1
  264. package/dist/rules/convertToJsdocComments.js +0 -231
  265. package/dist/rules/convertToJsdocComments.js.map +0 -1
  266. package/dist/rules/emptyTags.js +0 -67
  267. package/dist/rules/emptyTags.js.map +0 -1
  268. package/dist/rules/implementsOnClasses.js +0 -40
  269. package/dist/rules/implementsOnClasses.js.map +0 -1
  270. package/dist/rules/importsAsDependencies.js +0 -68
  271. package/dist/rules/importsAsDependencies.js.map +0 -1
  272. package/dist/rules/informativeDocs.js +0 -110
  273. package/dist/rules/informativeDocs.js.map +0 -1
  274. package/dist/rules/linesBeforeBlock.js +0 -75
  275. package/dist/rules/linesBeforeBlock.js.map +0 -1
  276. package/dist/rules/matchDescription.js +0 -167
  277. package/dist/rules/matchDescription.js.map +0 -1
  278. package/dist/rules/matchName.js +0 -77
  279. package/dist/rules/matchName.js.map +0 -1
  280. package/dist/rules/multilineBlocks.js +0 -245
  281. package/dist/rules/multilineBlocks.js.map +0 -1
  282. package/dist/rules/noBadBlocks.js +0 -68
  283. package/dist/rules/noBadBlocks.js.map +0 -1
  284. package/dist/rules/noBlankBlockDescriptions.js +0 -41
  285. package/dist/rules/noBlankBlockDescriptions.js.map +0 -1
  286. package/dist/rules/noBlankBlocks.js +0 -30
  287. package/dist/rules/noBlankBlocks.js.map +0 -1
  288. package/dist/rules/noDefaults.js +0 -56
  289. package/dist/rules/noDefaults.js.map +0 -1
  290. package/dist/rules/noMissingSyntax.js +0 -126
  291. package/dist/rules/noMissingSyntax.js.map +0 -1
  292. package/dist/rules/noMultiAsterisks.js +0 -58
  293. package/dist/rules/noMultiAsterisks.js.map +0 -1
  294. package/dist/rules/noRestrictedSyntax.js +0 -49
  295. package/dist/rules/noRestrictedSyntax.js.map +0 -1
  296. package/dist/rules/noTypes.js +0 -65
  297. package/dist/rules/noTypes.js.map +0 -1
  298. package/dist/rules/noUndefinedTypes.js +0 -303
  299. package/dist/rules/noUndefinedTypes.js.map +0 -1
  300. package/dist/rules/requireAsteriskPrefix.js +0 -112
  301. package/dist/rules/requireAsteriskPrefix.js.map +0 -1
  302. package/dist/rules/requireDescription.js +0 -95
  303. package/dist/rules/requireDescription.js.map +0 -1
  304. package/dist/rules/requireDescriptionCompleteSentence.js +0 -220
  305. package/dist/rules/requireDescriptionCompleteSentence.js.map +0 -1
  306. package/dist/rules/requireExample.js +0 -77
  307. package/dist/rules/requireExample.js.map +0 -1
  308. package/dist/rules/requireFileOverview.js +0 -81
  309. package/dist/rules/requireFileOverview.js.map +0 -1
  310. package/dist/rules/requireHyphenBeforeParamDescription.js +0 -89
  311. package/dist/rules/requireHyphenBeforeParamDescription.js.map +0 -1
  312. package/dist/rules/requireJsdoc.js +0 -404
  313. package/dist/rules/requireJsdoc.js.map +0 -1
  314. package/dist/rules/requireParam.js +0 -344
  315. package/dist/rules/requireParam.js.map +0 -1
  316. package/dist/rules/requireParamDescription.js +0 -59
  317. package/dist/rules/requireParamDescription.js.map +0 -1
  318. package/dist/rules/requireParamName.js +0 -36
  319. package/dist/rules/requireParamName.js.map +0 -1
  320. package/dist/rules/requireParamType.js +0 -59
  321. package/dist/rules/requireParamType.js.map +0 -1
  322. package/dist/rules/requireProperty.js +0 -35
  323. package/dist/rules/requireProperty.js.map +0 -1
  324. package/dist/rules/requirePropertyDescription.js +0 -21
  325. package/dist/rules/requirePropertyDescription.js.map +0 -1
  326. package/dist/rules/requirePropertyName.js +0 -21
  327. package/dist/rules/requirePropertyName.js.map +0 -1
  328. package/dist/rules/requirePropertyType.js +0 -21
  329. package/dist/rules/requirePropertyType.js.map +0 -1
  330. package/dist/rules/requireReturns.js +0 -131
  331. package/dist/rules/requireReturns.js.map +0 -1
  332. package/dist/rules/requireReturnsCheck.js +0 -66
  333. package/dist/rules/requireReturnsCheck.js.map +0 -1
  334. package/dist/rules/requireReturnsDescription.js +0 -43
  335. package/dist/rules/requireReturnsDescription.js.map +0 -1
  336. package/dist/rules/requireReturnsType.js +0 -36
  337. package/dist/rules/requireReturnsType.js.map +0 -1
  338. package/dist/rules/requireTemplate.js +0 -122
  339. package/dist/rules/requireTemplate.js.map +0 -1
  340. package/dist/rules/requireThrows.js +0 -67
  341. package/dist/rules/requireThrows.js.map +0 -1
  342. package/dist/rules/requireYields.js +0 -115
  343. package/dist/rules/requireYields.js.map +0 -1
  344. package/dist/rules/requireYieldsCheck.js +0 -105
  345. package/dist/rules/requireYieldsCheck.js.map +0 -1
  346. package/dist/rules/sortTags.js +0 -262
  347. package/dist/rules/sortTags.js.map +0 -1
  348. package/dist/rules/tagLines.js +0 -183
  349. package/dist/rules/tagLines.js.map +0 -1
  350. package/dist/rules/textEscaping.js +0 -102
  351. package/dist/rules/textEscaping.js.map +0 -1
  352. package/dist/rules/validTypes.js +0 -259
  353. package/dist/rules/validTypes.js.map +0 -1
  354. package/dist/tagNames.js +0 -144
  355. package/dist/tagNames.js.map +0 -1
  356. package/dist/utils/hasReturnValue.js +0 -265
  357. package/dist/utils/hasReturnValue.js.map +0 -1
@@ -1,344 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requireParam.js
4
- /**
5
- * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn
6
- */
7
- /**
8
- * @param {string[]} desiredRoots
9
- * @param {number} currentIndex
10
- * @returns {RootNamerReturn}
11
- */
12
- const rootNamer = (desiredRoots, currentIndex) => {
13
- /** @type {string} */
14
- let name;
15
- let idx = currentIndex;
16
- const incremented = desiredRoots.length <= 1;
17
- if (incremented) {
18
- const base = desiredRoots[0];
19
- const suffix = idx++;
20
- name = `${base}${suffix}`;
21
- } else name = desiredRoots.shift();
22
- return [
23
- name,
24
- incremented,
25
- () => {
26
- return rootNamer(desiredRoots, idx);
27
- }
28
- ];
29
- };
30
- var requireParam_default = iterateJsdoc(({ context, jsdoc, utils }) => {
31
- if (utils.avoidDocs()) return;
32
- if (utils.hasTag("type")) return;
33
- const { autoIncrementBase = 0, checkDestructured = true, checkDestructuredRoots = true, checkRestProperty = false, checkTypesPattern = "/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/", enableFixer = true, enableRestElementFixer = true, enableRootFixer = true, ignoreWhenAllParamsMissing = false, unnamedRootBase = ["root"], useDefaultObjectProperties = false } = context.options[0] || {};
34
- const preferredTagName = utils.getPreferredTagName({ tagName: "param" });
35
- if (!preferredTagName) return;
36
- const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);
37
- if (!functionParameterNames.length) return;
38
- const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);
39
- if (ignoreWhenAllParamsMissing && !jsdocParameterNames.length) return;
40
- const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {
41
- return !tag.name.includes(".");
42
- }).map((tag, idx) => {
43
- return {
44
- ...tag,
45
- idx
46
- };
47
- });
48
- const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);
49
- /**
50
- * @type {{
51
- * functionParameterIdx: import('../iterateJsdoc.js').Integer,
52
- * functionParameterName: string,
53
- * inc: boolean|undefined,
54
- * remove?: true,
55
- * type?: string|undefined
56
- * }[]}
57
- */
58
- const missingTags = [];
59
- const flattenedRoots = utils.flattenRoots(functionParameterNames).names;
60
- /**
61
- * @type {{
62
- * [key: string]: import('../iterateJsdoc.js').Integer
63
- * }}
64
- */
65
- const paramIndex = {};
66
- /**
67
- * @param {string} cur
68
- * @returns {boolean}
69
- */
70
- const hasParamIndex = (cur) => {
71
- return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;
72
- };
73
- /**
74
- *
75
- * @param {string|number|undefined} cur
76
- * @returns {import('../iterateJsdoc.js').Integer}
77
- */
78
- const getParamIndex = (cur) => {
79
- return paramIndex[utils.dropPathSegmentQuotes(String(cur))];
80
- };
81
- /**
82
- *
83
- * @param {string} cur
84
- * @param {import('../iterateJsdoc.js').Integer} idx
85
- * @returns {void}
86
- */
87
- const setParamIndex = (cur, idx) => {
88
- paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;
89
- };
90
- for (const [idx, cur] of flattenedRoots.entries()) setParamIndex(cur, idx);
91
- /**
92
- *
93
- * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
94
- * newAdd?: boolean
95
- * })[]} jsdocTags
96
- * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams
97
- * @returns {import('../iterateJsdoc.js').Integer}
98
- */
99
- const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
100
- const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);
101
- const foundIndex = jsdocTags.findIndex(({ name, newAdd }) => {
102
- return !newAdd && remainingRoots.some((remainingRoot) => {
103
- if (Array.isArray(remainingRoot)) return remainingRoot[1].names.includes(name);
104
- if (typeof remainingRoot === "object") return name === remainingRoot.name;
105
- return name === remainingRoot;
106
- });
107
- });
108
- const tags = foundIndex > -1 ? jsdocTags.slice(0, foundIndex) : jsdocTags.filter(({ tag }) => {
109
- return tag === preferredTagName;
110
- });
111
- let tagLineCount = 0;
112
- for (const { source } of tags) for (const { tokens: { end } } of source) if (!end) tagLineCount++;
113
- return tagLineCount;
114
- };
115
- let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);
116
- const thisOffset = functionParameterNames[0] === "this" ? 1 : 0;
117
- for (const [functionParameterIdx, functionParameterName] of functionParameterNames.entries()) {
118
- let inc;
119
- if (Array.isArray(functionParameterName)) {
120
- const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset];
121
- /** @type {string} */
122
- let rootName;
123
- if (functionParameterName[0]) rootName = functionParameterName[0];
124
- else if (matchedJsdoc && matchedJsdoc.name) {
125
- rootName = matchedJsdoc.name;
126
- if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) continue;
127
- } else {
128
- rootName = nextRootName;
129
- inc = incremented;
130
- }
131
- [nextRootName, incremented, namer] = namer();
132
- const { hasPropertyRest, hasRestElement, names, rests } = functionParameterName[1];
133
- const notCheckingNames = [];
134
- if (!enableRestElementFixer && hasRestElement) continue;
135
- if (!checkDestructuredRoots) continue;
136
- for (const [idx, paramName] of names.entries()) {
137
- if (!jsdocParameterNames.find(({ name }) => {
138
- return name === rootName;
139
- }) && !missingTags.find(({ functionParameterName: fpn }) => {
140
- return fpn === rootName;
141
- })) {
142
- const emptyParamIdx = jsdocParameterNames.findIndex(({ name }) => {
143
- return !name;
144
- });
145
- if (emptyParamIdx > -1) missingTags.push({
146
- functionParameterIdx: emptyParamIdx,
147
- functionParameterName: rootName,
148
- inc,
149
- remove: true
150
- });
151
- else missingTags.push({
152
- functionParameterIdx: hasParamIndex(rootName) ? getParamIndex(rootName) : getParamIndex(paramName),
153
- functionParameterName: rootName,
154
- inc
155
- });
156
- }
157
- if (!checkDestructured) continue;
158
- if (!checkRestProperty && rests[idx]) continue;
159
- const fullParamName = `${rootName}.${paramName}`;
160
- const notCheckingName = jsdocParameterNames.find(({ name, type: paramType }) => {
161
- return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== "";
162
- });
163
- if (notCheckingName !== void 0) notCheckingNames.push(notCheckingName.name);
164
- if (notCheckingNames.find((name) => {
165
- return fullParamName.startsWith(name);
166
- })) continue;
167
- if (jsdocParameterNames && !jsdocParameterNames.find(({ name }) => {
168
- return utils.comparePaths(name)(fullParamName);
169
- })) missingTags.push({
170
- functionParameterIdx: getParamIndex(functionParameterName[0] ? fullParamName : paramName),
171
- functionParameterName: fullParamName,
172
- inc,
173
- type: hasRestElement && !hasPropertyRest ? "{...any}" : void 0
174
- });
175
- }
176
- continue;
177
- }
178
- /** @type {string} */
179
- let funcParamName;
180
- let type;
181
- if (typeof functionParameterName === "object") {
182
- if (!enableRestElementFixer && functionParameterName.restElement) continue;
183
- funcParamName = functionParameterName.name;
184
- type = "{...any}";
185
- } else funcParamName = functionParameterName;
186
- if (jsdocParameterNames && !jsdocParameterNames.find(({ name }) => {
187
- return name === funcParamName;
188
- }) && funcParamName !== "this") missingTags.push({
189
- functionParameterIdx: getParamIndex(funcParamName),
190
- functionParameterName: funcParamName,
191
- inc,
192
- type
193
- });
194
- }
195
- /**
196
- *
197
- * @param {{
198
- * functionParameterIdx: import('../iterateJsdoc.js').Integer,
199
- * functionParameterName: string,
200
- * remove?: true,
201
- * inc?: boolean,
202
- * type?: string
203
- * }} cfg
204
- */
205
- const fix = ({ functionParameterIdx, functionParameterName, inc, remove, type }) => {
206
- if (inc && !enableRootFixer) return;
207
- /**
208
- *
209
- * @param {import('../iterateJsdoc.js').Integer} tagIndex
210
- * @param {import('../iterateJsdoc.js').Integer} sourceIndex
211
- * @param {import('../iterateJsdoc.js').Integer} spliceCount
212
- * @returns {void}
213
- */
214
- const createTokens = (tagIndex, sourceIndex, spliceCount) => {
215
- const tokens = {
216
- number: sourceIndex + 1,
217
- source: "",
218
- tokens: {
219
- delimiter: "*",
220
- description: "",
221
- end: "",
222
- lineEnd: "",
223
- name: functionParameterName,
224
- newAdd: true,
225
- postDelimiter: " ",
226
- postName: "",
227
- postTag: " ",
228
- postType: type ? " " : "",
229
- start: jsdoc.source[sourceIndex].tokens.start,
230
- tag: `@${preferredTagName}`,
231
- type: type ?? ""
232
- }
233
- };
234
- /**
235
- * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
236
- * newAdd?: true
237
- * })[]}
238
- */ jsdoc.tags.splice(tagIndex, spliceCount, {
239
- description: "",
240
- inlineTags: [],
241
- name: functionParameterName,
242
- newAdd: true,
243
- optional: false,
244
- problems: [],
245
- source: [tokens],
246
- tag: preferredTagName,
247
- type: type ?? ""
248
- });
249
- const firstNumber = jsdoc.source[0].number;
250
- jsdoc.source.splice(sourceIndex, spliceCount, tokens);
251
- for (const [idx, src] of jsdoc.source.slice(sourceIndex).entries()) src.number = firstNumber + sourceIndex + idx;
252
- };
253
- const offset = jsdoc.source.findIndex(({ tokens: { end, tag } }) => {
254
- return tag || end;
255
- });
256
- if (remove) createTokens(functionParameterIdx, offset + functionParameterIdx, 1);
257
- else {
258
- const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);
259
- createTokens(expectedIdx, offset + expectedIdx, 0);
260
- }
261
- };
262
- /**
263
- * @returns {void}
264
- */
265
- const fixer = () => {
266
- for (const missingTag of missingTags) fix(missingTag);
267
- };
268
- if (missingTags.length && jsdoc.source.length === 1) utils.makeMultiline();
269
- for (const { functionParameterName } of missingTags) utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, enableFixer ? fixer : null);
270
- }, {
271
- contextDefaults: true,
272
- meta: {
273
- docs: {
274
- description: "Requires that all function parameters are documented.",
275
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header"
276
- },
277
- fixable: "code",
278
- schema: [{
279
- additionalProperties: false,
280
- properties: {
281
- autoIncrementBase: {
282
- default: 0,
283
- type: "integer"
284
- },
285
- checkConstructors: {
286
- default: true,
287
- type: "boolean"
288
- },
289
- checkDestructured: {
290
- default: true,
291
- type: "boolean"
292
- },
293
- checkDestructuredRoots: {
294
- default: true,
295
- type: "boolean"
296
- },
297
- checkGetters: {
298
- default: false,
299
- type: "boolean"
300
- },
301
- checkRestProperty: {
302
- default: false,
303
- type: "boolean"
304
- },
305
- checkSetters: {
306
- default: false,
307
- type: "boolean"
308
- },
309
- checkTypesPattern: { type: "string" },
310
- contexts: {
311
- items: { anyOf: [{ type: "string" }, {
312
- additionalProperties: false,
313
- properties: {
314
- comment: { type: "string" },
315
- context: { type: "string" }
316
- },
317
- type: "object"
318
- }] },
319
- type: "array"
320
- },
321
- enableFixer: { type: "boolean" },
322
- enableRestElementFixer: { type: "boolean" },
323
- enableRootFixer: { type: "boolean" },
324
- exemptedBy: {
325
- items: { type: "string" },
326
- type: "array"
327
- },
328
- ignoreWhenAllParamsMissing: { type: "boolean" },
329
- unnamedRootBase: {
330
- items: { type: "string" },
331
- type: "array"
332
- },
333
- useDefaultObjectProperties: { type: "boolean" }
334
- },
335
- type: "object"
336
- }],
337
- type: "suggestion"
338
- },
339
- noTracking: true
340
- });
341
-
342
- //#endregion
343
- export { requireParam_default as default };
344
- //# sourceMappingURL=requireParam.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireParam.js","names":[],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn\n */\n\n/**\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {RootNamerReturn}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n /** @type {string} */\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = /** @type {string} */ (desiredRoots.shift());\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkRestProperty = false,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRestElementFixer = true,\n enableRootFixer = true,\n ignoreWhenAllParamsMissing = false,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames =\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer;\n * name: string;\n * type: string;\n * }[]}\n */ (utils.getJsdocTagsDeep(preferredTagName));\n\n if (ignoreWhenAllParamsMissing && !jsdocParameterNames.length) {\n return;\n }\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n /**\n * @type {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * inc: boolean|undefined,\n * remove?: true,\n * type?: string|undefined\n * }[]}\n */\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n /**\n * @type {{\n * [key: string]: import('../iterateJsdoc.js').Integer\n * }}\n */\n const paramIndex = {};\n\n /**\n * @param {string} cur\n * @returns {boolean}\n */\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {string|number|undefined} cur\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {string} cur\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: boolean\n * })[]} jsdocTags\n * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return (\n /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string|undefined;\n * }}\n */ (remainingRoot[1]).names.includes(name)\n );\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n const thisOffset = functionParameterNames[0] === 'this' ? 1 : 0;\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset];\n\n /** @type {string} */\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n }\n\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n\n const {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n } = /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string | undefined;\n * }}\n */ (functionParameterName[1]);\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n /** @type {string} */\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = /** @type {string} */ (functionParameterName.name);\n type = '{...any}';\n } else {\n funcParamName = /** @type {string} */ (functionParameterName);\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove?: true,\n * inc?: boolean,\n * type?: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n inc,\n remove,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {import('../iterateJsdoc.js').Integer} tagIndex\n * @param {import('../iterateJsdoc.js').Integer} sourceIndex\n * @param {import('../iterateJsdoc.js').Integer} spliceCount\n * @returns {void}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n source: '',\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n\n /**\n * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: true\n * })[]}\n */ (jsdoc.tags).splice(tagIndex, spliceCount, {\n description: '',\n inlineTags: [],\n name: functionParameterName,\n newAdd: true,\n optional: false,\n problems: [],\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n end,\n tag,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ignoreWhenAllParamsMissing: {\n type: 'boolean',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requireParamDescription.js
4
- var requireParamDescription_default = iterateJsdoc(({ context, report, settings, utils }) => {
5
- const { defaultDestructuredRootDescription = "The root object", setDefaultDestructuredRootDescription = false } = context.options[0] || {};
6
- const functionParameterNames = utils.getFunctionParameterNames();
7
- let rootCount = -1;
8
- utils.forEachPreferredTag("param", (jsdocParameter, targetTagName) => {
9
- rootCount += jsdocParameter.name.includes(".") ? 0 : 1;
10
- if (!jsdocParameter.description.trim()) {
11
- if (Array.isArray(functionParameterNames[rootCount])) {
12
- if (settings.exemptDestructuredRootsFromChecks) return;
13
- if (setDefaultDestructuredRootDescription) {
14
- utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {
15
- utils.changeTag(jsdocParameter, {
16
- description: defaultDestructuredRootDescription,
17
- postName: " "
18
- });
19
- });
20
- return;
21
- }
22
- }
23
- report(`Missing JSDoc @${targetTagName} "${jsdocParameter.name}" description.`, null, jsdocParameter);
24
- }
25
- });
26
- }, {
27
- contextDefaults: true,
28
- meta: {
29
- docs: {
30
- description: "Requires that each `@param` tag has a `description` value.",
31
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header"
32
- },
33
- fixable: "code",
34
- schema: [{
35
- additionalProperties: false,
36
- properties: {
37
- contexts: {
38
- items: { anyOf: [{ type: "string" }, {
39
- additionalProperties: false,
40
- properties: {
41
- comment: { type: "string" },
42
- context: { type: "string" }
43
- },
44
- type: "object"
45
- }] },
46
- type: "array"
47
- },
48
- defaultDestructuredRootDescription: { type: "string" },
49
- setDefaultDestructuredRootDescription: { type: "boolean" }
50
- },
51
- type: "object"
52
- }],
53
- type: "suggestion"
54
- }
55
- });
56
-
57
- //#endregion
58
- export { requireParamDescription_default as default };
59
- //# sourceMappingURL=requireParamDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireParamDescription.js","names":[],"sources":["../../src/rules/requireParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootDescription = 'The root object',\n setDefaultDestructuredRootDescription = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.description.trim()) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootDescription) {\n utils.reportJSDoc(`Missing root description for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n description: defaultDestructuredRootDescription,\n postName: ' ',\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootDescription: {\n type: 'string',\n },\n setDefaultDestructuredRootDescription: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;AAEA,sCAAe,aAAa,CAAC,EAC3B,SACA,QACA,UACA,OACD,KAAK;CACJ,MAAM,EACJ,qCAAqC,mBACrC,wCAAwC,OACzC,GAAG,QAAQ,QAAQ,MAAM,CAAE;CAE5B,MAAM,yBAAyB,MAAM,2BAA2B;CAEhE,IAAI,YAAY;CAChB,MAAM,oBAAoB,SAAS,CAAC,gBAAgB,kBAAkB;EACpE,aAAa,eAAe,KAAK,SAAS,IAAI,GAAG,IAAI;AACrD,MAAI,CAAC,eAAe,YAAY,MAAM,EAAE;AACtC,OAAI,MAAM,QAAQ,uBAAuB,WAAW,EAAE;AACpD,QAAI,SAAS,kCACX;AAGF,QAAI,uCAAuC;KACzC,MAAM,YAAY,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC,EAAE,gBAAgB,MAAM;MACzF,MAAM,UAAU,gBAAgB;OAC9B,aAAa;OACb,UAAU;MACX,EAAC;KACH,EAAC;AACF;IACD;GACF;GAED,OACE,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,eAAe,KAAK,cAAc,CAAC,EACvE,MACA,eACD;EACF;CACF,EAAC;AACH,GAAE;CACD,iBAAiB;CACjB,MAAM;EACJ,MAAM;GACJ,aAAa;GACb,KAAK;EACN;EACD,SAAS;EACT,QAAQ,CACN;GACE,sBAAsB;GACtB,YAAY;IACV,UAAU;KACR,OAAO,EACL,OAAO,CACL,EACE,MAAM,SACP,GACD;MACE,sBAAsB;MACtB,YAAY;OACV,SAAS,EACP,MAAM,SACP;OACD,SAAS,EACP,MAAM,SACP;MACF;MACD,MAAM;KACP,CACF,EACF;KACD,MAAM;IACP;IACD,oCAAoC,EAClC,MAAM,SACP;IACD,uCAAuC,EACrC,MAAM,UACP;GACF;GACD,MAAM;EACP,CACF;EACD,MAAM;CACP;AACF,EAAC"}
@@ -1,36 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requireParamName.js
4
- var requireParamName_default = iterateJsdoc(({ report, utils }) => {
5
- utils.forEachPreferredTag("param", (jsdocParameter, targetTagName) => {
6
- if (jsdocParameter.tag && jsdocParameter.name === "") report(`There must be an identifier after @${targetTagName} ${jsdocParameter.type === "" ? "type" : "tag"}.`, null, jsdocParameter);
7
- });
8
- }, {
9
- contextDefaults: true,
10
- meta: {
11
- docs: {
12
- description: "Requires that all function parameters have names.",
13
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header"
14
- },
15
- schema: [{
16
- additionalProperties: false,
17
- properties: { contexts: {
18
- items: { anyOf: [{ type: "string" }, {
19
- additionalProperties: false,
20
- properties: {
21
- comment: { type: "string" },
22
- context: { type: "string" }
23
- },
24
- type: "object"
25
- }] },
26
- type: "array"
27
- } },
28
- type: "object"
29
- }],
30
- type: "suggestion"
31
- }
32
- });
33
-
34
- //#endregion
35
- export { requireParamName_default as default };
36
- //# sourceMappingURL=requireParamName.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireParamName.js","names":[],"sources":["../../src/rules/requireParamName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters have names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-name.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;AAEA,+BAAe,aAAa,CAAC,EAC3B,QACA,OACD,KAAK;CACJ,MAAM,oBAAoB,SAAS,CAAC,gBAAgB,kBAAkB;AACpE,MAAI,eAAe,OAAO,eAAe,SAAS,IAChD,OACE,CAAC,mCAAmC,EAAE,cAAc,CAAC,EAAE,eAAe,SAAS,KAAK,SAAS,MAAM,CAAC,CAAC,EACrG,MACA,eACD;CAEJ,EAAC;AACH,GAAE;CACD,iBAAiB;CACjB,MAAM;EACJ,MAAM;GACJ,aAAa;GACb,KAAK;EACN;EACD,QAAQ,CACN;GACE,sBAAsB;GACtB,YAAY,EACV,UAAU;IACR,OAAO,EACL,OAAO,CACL,EACE,MAAM,SACP,GACD;KACE,sBAAsB;KACtB,YAAY;MACV,SAAS,EACP,MAAM,SACP;MACD,SAAS,EACP,MAAM,SACP;KACF;KACD,MAAM;IACP,CACF,EACF;IACD,MAAM;GACP,EACF;GACD,MAAM;EACP,CACF;EACD,MAAM;CACP;AACF,EAAC"}
@@ -1,59 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requireParamType.js
4
- var requireParamType_default = iterateJsdoc(({ context, report, settings, utils }) => {
5
- const { defaultDestructuredRootType = "object", setDefaultDestructuredRootType = false } = context.options[0] || {};
6
- const functionParameterNames = utils.getFunctionParameterNames();
7
- let rootCount = -1;
8
- utils.forEachPreferredTag("param", (jsdocParameter, targetTagName) => {
9
- rootCount += jsdocParameter.name.includes(".") ? 0 : 1;
10
- if (!jsdocParameter.type) {
11
- if (Array.isArray(functionParameterNames[rootCount])) {
12
- if (settings.exemptDestructuredRootsFromChecks) return;
13
- if (setDefaultDestructuredRootType) {
14
- utils.reportJSDoc(`Missing root type for @${targetTagName}.`, jsdocParameter, () => {
15
- utils.changeTag(jsdocParameter, {
16
- postType: " ",
17
- type: `{${defaultDestructuredRootType}}`
18
- });
19
- });
20
- return;
21
- }
22
- }
23
- report(`Missing JSDoc @${targetTagName} "${jsdocParameter.name}" type.`, null, jsdocParameter);
24
- }
25
- });
26
- }, {
27
- contextDefaults: true,
28
- meta: {
29
- docs: {
30
- description: "Requires that each `@param` tag has a `type` value.",
31
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header"
32
- },
33
- fixable: "code",
34
- schema: [{
35
- additionalProperties: false,
36
- properties: {
37
- contexts: {
38
- items: { anyOf: [{ type: "string" }, {
39
- additionalProperties: false,
40
- properties: {
41
- comment: { type: "string" },
42
- context: { type: "string" }
43
- },
44
- type: "object"
45
- }] },
46
- type: "array"
47
- },
48
- defaultDestructuredRootType: { type: "string" },
49
- setDefaultDestructuredRootType: { type: "boolean" }
50
- },
51
- type: "object"
52
- }],
53
- type: "suggestion"
54
- }
55
- });
56
-
57
- //#endregion
58
- export { requireParamType_default as default };
59
- //# sourceMappingURL=requireParamType.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireParamType.js","names":[],"sources":["../../src/rules/requireParamType.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n utils,\n}) => {\n const {\n defaultDestructuredRootType = 'object',\n setDefaultDestructuredRootType = false,\n } = context.options[0] || {};\n\n const functionParameterNames = utils.getFunctionParameterNames();\n\n let rootCount = -1;\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n rootCount += jsdocParameter.name.includes('.') ? 0 : 1;\n if (!jsdocParameter.type) {\n if (Array.isArray(functionParameterNames[rootCount])) {\n if (settings.exemptDestructuredRootsFromChecks) {\n return;\n }\n\n if (setDefaultDestructuredRootType) {\n utils.reportJSDoc(`Missing root type for @${targetTagName}.`, jsdocParameter, () => {\n utils.changeTag(jsdocParameter, {\n postType: ' ',\n type: `{${defaultDestructuredRootType}}`,\n });\n });\n return;\n }\n }\n\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that each `@param` tag has a `type` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-type.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n defaultDestructuredRootType: {\n type: 'string',\n },\n setDefaultDestructuredRootType: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;AAEA,+BAAe,aAAa,CAAC,EAC3B,SACA,QACA,UACA,OACD,KAAK;CACJ,MAAM,EACJ,8BAA8B,UAC9B,iCAAiC,OAClC,GAAG,QAAQ,QAAQ,MAAM,CAAE;CAE5B,MAAM,yBAAyB,MAAM,2BAA2B;CAEhE,IAAI,YAAY;CAChB,MAAM,oBAAoB,SAAS,CAAC,gBAAgB,kBAAkB;EACpE,aAAa,eAAe,KAAK,SAAS,IAAI,GAAG,IAAI;AACrD,MAAI,CAAC,eAAe,MAAM;AACxB,OAAI,MAAM,QAAQ,uBAAuB,WAAW,EAAE;AACpD,QAAI,SAAS,kCACX;AAGF,QAAI,gCAAgC;KAClC,MAAM,YAAY,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC,EAAE,gBAAgB,MAAM;MAClF,MAAM,UAAU,gBAAgB;OAC9B,UAAU;OACV,MAAM,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;MACzC,EAAC;KACH,EAAC;AACF;IACD;GACF;GAED,OACE,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,eAAe,KAAK,OAAO,CAAC,EAChE,MACA,eACD;EACF;CACF,EAAC;AACH,GAAE;CACD,iBAAiB;CACjB,MAAM;EACJ,MAAM;GACJ,aAAa;GACb,KAAK;EACN;EACD,SAAS;EACT,QAAQ,CACN;GACE,sBAAsB;GACtB,YAAY;IACV,UAAU;KACR,OAAO,EACL,OAAO,CACL,EACE,MAAM,SACP,GACD;MACE,sBAAsB;MACtB,YAAY;OACV,SAAS,EACP,MAAM,SACP;OACD,SAAS,EACP,MAAM,SACP;MACF;MACD,MAAM;KACP,CACF,EACF;KACD,MAAM;IACP;IACD,6BAA6B,EAC3B,MAAM,SACP;IACD,gCAAgC,EAC9B,MAAM,UACP;GACF;GACD,MAAM;EACP,CACF;EACD,MAAM;CACP;AACF,EAAC"}
@@ -1,35 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requireProperty.js
4
- var requireProperty_default = iterateJsdoc(({ utils }) => {
5
- const propertyAssociatedTags = utils.filterTags(({ tag }) => {
6
- return ["namespace", "typedef"].includes(tag);
7
- });
8
- if (!propertyAssociatedTags.length) return;
9
- const targetTagName = utils.getPreferredTagName({ tagName: "property" });
10
- if (utils.hasATag([targetTagName])) return;
11
- for (const propertyAssociatedTag of propertyAssociatedTags) {
12
- if (![
13
- "object",
14
- "Object",
15
- "PlainObject"
16
- ].includes(propertyAssociatedTag.type)) continue;
17
- utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {
18
- utils.addTag(targetTagName);
19
- });
20
- }
21
- }, {
22
- iterateAllJsdocs: true,
23
- meta: {
24
- docs: {
25
- description: "Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.",
26
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header"
27
- },
28
- fixable: "code",
29
- type: "suggestion"
30
- }
31
- });
32
-
33
- //#endregion
34
- export { requireProperty_default as default };
35
- //# sourceMappingURL=requireProperty.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requireProperty.js","names":[],"sources":["../../src/rules/requireProperty.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n const propertyAssociatedTags = utils.filterTags(({\n tag,\n }) => {\n return [\n 'namespace', 'typedef',\n ].includes(tag);\n });\n if (!propertyAssociatedTags.length) {\n return;\n }\n\n const targetTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'property',\n }));\n\n if (utils.hasATag([\n targetTagName,\n ])) {\n return;\n }\n\n for (const propertyAssociatedTag of propertyAssociatedTags) {\n if (![\n 'object', 'Object', 'PlainObject',\n ].includes(propertyAssociatedTag.type)) {\n continue;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {\n utils.addTag(targetTagName);\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property.md#repos-sticky-header',\n },\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"mappings":";;;AAEA,8BAAe,aAAa,CAAC,EAC3B,OACD,KAAK;CACJ,MAAM,yBAAyB,MAAM,WAAW,CAAC,EAC/C,KACD,KAAK;AACJ,SAAO,CACL,aAAa,SACd,EAAC,SAAS,IAAI;CAChB,EAAC;AACF,KAAI,CAAC,uBAAuB,OAC1B;CAGF,MAAM,gBAAuC,MAAM,oBAAoB,EACrE,SAAS,WACV,EAAC;AAEF,KAAI,MAAM,QAAQ,CAChB,aACD,EAAC,CACA;AAGF,MAAK,MAAM,yBAAyB,wBAAwB;AAC1D,MAAI,CAAC;GACH;GAAU;GAAU;EACrB,EAAC,SAAS,sBAAsB,KAAK,CACpC;EAGF,MAAM,YAAY,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,MAAM,MAAM;GAChE,MAAM,OAAO,cAAc;EAC5B,EAAC;CACH;AACF,GAAE;CACD,kBAAkB;CAClB,MAAM;EACJ,MAAM;GACJ,aAAa;GACb,KAAK;EACN;EACD,SAAS;EACT,MAAM;CACP;AACF,EAAC"}
@@ -1,21 +0,0 @@
1
- import iterateJsdoc from "../iterateJsdoc.js";
2
-
3
- //#region src/rules/requirePropertyDescription.js
4
- var requirePropertyDescription_default = iterateJsdoc(({ report, utils }) => {
5
- utils.forEachPreferredTag("property", (jsdoc, targetTagName) => {
6
- if (!jsdoc.description.trim()) report(`Missing JSDoc @${targetTagName} "${jsdoc.name}" description.`, null, jsdoc);
7
- });
8
- }, {
9
- iterateAllJsdocs: true,
10
- meta: {
11
- docs: {
12
- description: "Requires that each `@property` tag has a `description` value.",
13
- url: "https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header"
14
- },
15
- type: "suggestion"
16
- }
17
- });
18
-
19
- //#endregion
20
- export { requirePropertyDescription_default as default };
21
- //# sourceMappingURL=requirePropertyDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requirePropertyDescription.js","names":[],"sources":["../../src/rules/requirePropertyDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('property', (jsdoc, targetTagName) => {\n if (!jsdoc.description.trim()) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdoc.name}\" description.`,\n null,\n jsdoc,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that each `@property` tag has a `description` value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-property-description.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;AAEA,yCAAe,aAAa,CAAC,EAC3B,QACA,OACD,KAAK;CACJ,MAAM,oBAAoB,YAAY,CAAC,OAAO,kBAAkB;AAC9D,MAAI,CAAC,MAAM,YAAY,MAAM,EAC3B,OACE,CAAC,eAAe,EAAE,cAAc,EAAE,EAAE,MAAM,KAAK,cAAc,CAAC,EAC9D,MACA,MACD;CAEJ,EAAC;AACH,GAAE;CACD,kBAAkB;CAClB,MAAM;EACJ,MAAM;GACJ,aAAa;GACb,KAAK;EACN;EACD,MAAM;CACP;AACF,EAAC"}