@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,170 @@
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
+ * @param {string} str
11
+ * @param {string[]} excludeTags
12
+ * @returns {string}
13
+ */
14
+ const maskExcludedContent = (str, excludeTags) => {
15
+ const regContent = new RegExp(`([ \\t]+\\*)[ \\t]@(?:${excludeTags.join('|')})(?=[ \\n])([\\w\\|\\W]*?\\n)(?=[ \\t]*\\*(?:[ \\t]*@\\w+\\s|\\/))`, 'gv');
16
+ return str.replace(regContent, (_match, margin, code) => {
17
+ return (margin + '\n').repeat(code.match(/\n/gv).length);
18
+ });
19
+ };
20
+
21
+ /**
22
+ * @param {string} str
23
+ * @returns {string}
24
+ */
25
+ const maskCodeBlocks = str => {
26
+ const regContent = /([ \t]+\*)[ \t]```[^\n]*?([\w\|\W]*?\n)(?=[ \t]*\*(?:[ \t]*(?:```|@\w+\s)|\/))/gv;
27
+ return str.replaceAll(regContent, (_match, margin, code) => {
28
+ return (margin + '\n').repeat(code.match(/\n/gv).length);
29
+ });
30
+ };
31
+
32
+ /**
33
+ * @param {string[]} lines
34
+ * @param {number} lineIndex
35
+ * @returns {number}
36
+ */
37
+ const getLineNumber = (lines, lineIndex) => {
38
+ const precedingText = lines.slice(0, lineIndex).join('\n');
39
+ const lineBreaks = precedingText.match(/\n/gv) || [];
40
+ return lineBreaks.length + 1;
41
+ };
42
+ var _default = exports.default = (0, _iterateJsdoc.default)(({
43
+ context,
44
+ jsdocNode,
45
+ report,
46
+ sourceCode
47
+ }) => {
48
+ const options = context.options[0] || {};
49
+ const /** @type {{excludeTags: string[], allowIndentedSections: boolean}} */{
50
+ allowIndentedSections = false,
51
+ excludeTags = ['example']
52
+ } = options;
53
+ const textWithoutCodeBlocks = maskCodeBlocks(sourceCode.getText(jsdocNode));
54
+ const text = excludeTags.length ? maskExcludedContent(textWithoutCodeBlocks, excludeTags) : textWithoutCodeBlocks;
55
+ if (allowIndentedSections) {
56
+ // When allowIndentedSections is enabled, only check for indentation on tag lines
57
+ // and the very first line of the main description
58
+ const lines = text.split('\n');
59
+ let hasSeenContent = false;
60
+ let currentSectionIndent = null;
61
+ for (const [lineIndex, line] of lines.entries()) {
62
+ // Check for indentation (two or more spaces after *)
63
+ const indentMatch = line.match(/^(?:\/?\**|[\t ]*)\*([\t ]{2,})/v);
64
+ if (indentMatch) {
65
+ // Check what comes after the indentation
66
+ const afterIndent = line.slice(indentMatch[0].length);
67
+ const indentAmount = indentMatch[1].length;
68
+
69
+ // If this is a tag line with indentation, always report
70
+ if (/^@\w+/v.test(afterIndent)) {
71
+ report('There must be no indentation.', null, {
72
+ line: getLineNumber(lines, lineIndex)
73
+ });
74
+ return;
75
+ }
76
+
77
+ // If we haven't seen any content yet (main description first line) and there's content, report
78
+ if (!hasSeenContent && afterIndent.trim().length > 0) {
79
+ report('There must be no indentation.', null, {
80
+ line: getLineNumber(lines, lineIndex)
81
+ });
82
+ return;
83
+ }
84
+
85
+ // For continuation lines, check consistency
86
+ if (hasSeenContent && afterIndent.trim().length > 0) {
87
+ if (currentSectionIndent === null) {
88
+ // First indented line in this section, set the indent level
89
+ currentSectionIndent = indentAmount;
90
+ } else if (indentAmount < currentSectionIndent) {
91
+ // Indentation is less than the established level (inconsistent)
92
+ report('There must be no indentation.', null, {
93
+ line: getLineNumber(lines, lineIndex)
94
+ });
95
+ return;
96
+ }
97
+ }
98
+ } else if (/^\s*\*\s+\S/v.test(line)) {
99
+ // No indentation on this line, reset section indent tracking
100
+ // (unless it's just whitespace or a closing comment)
101
+ currentSectionIndent = null;
102
+ }
103
+
104
+ // Track if we've seen any content (non-whitespace after the *)
105
+ if (/^\s*\*\s+\S/v.test(line)) {
106
+ hasSeenContent = true;
107
+ }
108
+
109
+ // Reset section indent when we encounter a tag
110
+ if (/@\w+/v.test(line)) {
111
+ currentSectionIndent = null;
112
+ }
113
+ }
114
+ } else {
115
+ const reg = /^(?:\/?\**|[ \t]*)\*[ \t]{2}/gmv;
116
+ if (reg.test(text)) {
117
+ const lineBreaks = text.slice(0, reg.lastIndex).match(/\n/gv) || [];
118
+ report('There must be no indentation.', null, {
119
+ line: lineBreaks.length
120
+ });
121
+ }
122
+ }
123
+ }, {
124
+ iterateAllJsdocs: true,
125
+ meta: {
126
+ docs: {
127
+ description: 'Reports invalid padding inside JSDoc blocks.',
128
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header'
129
+ },
130
+ schema: [{
131
+ additionalProperties: false,
132
+ properties: {
133
+ allowIndentedSections: {
134
+ description: 'Allows indentation of nested sections on subsequent lines (like bullet lists)',
135
+ type: 'boolean'
136
+ },
137
+ excludeTags: {
138
+ description: `Array of tags (e.g., \`['example', 'description']\`) whose content will be
139
+ "hidden" from the \`check-indentation\` rule. Defaults to \`['example']\`.
140
+
141
+ By default, the whole JSDoc block will be checked for invalid padding.
142
+ That would include \`@example\` blocks too, which can get in the way
143
+ of adding full, readable examples of code without ending up with multiple
144
+ linting issues.
145
+
146
+ When disabled (by passing \`excludeTags: []\` option), the following code *will*
147
+ report a padding issue:
148
+
149
+ \`\`\`js
150
+ /**
151
+ * @example
152
+ * anArray.filter((a) => {
153
+ * return a.b;
154
+ * });
155
+ */
156
+ \`\`\``,
157
+ items: {
158
+ pattern: '^\\S+$',
159
+ type: 'string'
160
+ },
161
+ type: 'array'
162
+ }
163
+ },
164
+ type: 'object'
165
+ }],
166
+ type: 'layout'
167
+ }
168
+ });
169
+ module.exports = exports.default;
170
+ //# sourceMappingURL=checkIndentation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkIndentation.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","maskExcludedContent","str","excludeTags","regContent","RegExp","join","replace","_match","margin","code","repeat","match","length","maskCodeBlocks","replaceAll","getLineNumber","lines","lineIndex","precedingText","slice","lineBreaks","_default","exports","iterateJsdoc","context","jsdocNode","report","sourceCode","options","allowIndentedSections","textWithoutCodeBlocks","getText","text","split","hasSeenContent","currentSectionIndent","line","entries","indentMatch","afterIndent","indentAmount","test","trim","reg","lastIndex","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","type","items","pattern","module"],"sources":["../../src/rules/checkIndentation.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {string} str\n * @param {string[]} excludeTags\n * @returns {string}\n */\nconst maskExcludedContent = (str, excludeTags) => {\n const regContent = new RegExp(`([ \\\\t]+\\\\*)[ \\\\t]@(?:${excludeTags.join('|')})(?=[ \\\\n])([\\\\w\\\\|\\\\W]*?\\\\n)(?=[ \\\\t]*\\\\*(?:[ \\\\t]*@\\\\w+\\\\s|\\\\/))`, 'gv');\n\n return str.replace(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gv).length);\n });\n};\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst maskCodeBlocks = (str) => {\n const regContent = /([ \\t]+\\*)[ \\t]```[^\\n]*?([\\w\\|\\W]*?\\n)(?=[ \\t]*\\*(?:[ \\t]*(?:```|@\\w+\\s)|\\/))/gv;\n\n return str.replaceAll(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gv).length);\n });\n};\n\n/**\n * @param {string[]} lines\n * @param {number} lineIndex\n * @returns {number}\n */\nconst getLineNumber = (lines, lineIndex) => {\n const precedingText = lines.slice(0, lineIndex).join('\\n');\n const lineBreaks = precedingText.match(/\\n/gv) || [];\n return lineBreaks.length + 1;\n};\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n report,\n sourceCode,\n}) => {\n const options = context.options[0] || {};\n const /** @type {{excludeTags: string[], allowIndentedSections: boolean}} */ {\n allowIndentedSections = false,\n excludeTags = [\n 'example',\n ],\n } = options;\n\n const textWithoutCodeBlocks = maskCodeBlocks(sourceCode.getText(jsdocNode));\n const text = excludeTags.length ? maskExcludedContent(textWithoutCodeBlocks, excludeTags) : textWithoutCodeBlocks;\n\n if (allowIndentedSections) {\n // When allowIndentedSections is enabled, only check for indentation on tag lines\n // and the very first line of the main description\n const lines = text.split('\\n');\n let hasSeenContent = false;\n let currentSectionIndent = null;\n\n for (const [\n lineIndex,\n line,\n ] of lines.entries()) {\n // Check for indentation (two or more spaces after *)\n const indentMatch = line.match(/^(?:\\/?\\**|[\\t ]*)\\*([\\t ]{2,})/v);\n\n if (indentMatch) {\n // Check what comes after the indentation\n const afterIndent = line.slice(indentMatch[0].length);\n const indentAmount = indentMatch[1].length;\n\n // If this is a tag line with indentation, always report\n if (/^@\\w+/v.test(afterIndent)) {\n report('There must be no indentation.', null, {\n line: getLineNumber(lines, lineIndex),\n });\n return;\n }\n\n // If we haven't seen any content yet (main description first line) and there's content, report\n if (!hasSeenContent && afterIndent.trim().length > 0) {\n report('There must be no indentation.', null, {\n line: getLineNumber(lines, lineIndex),\n });\n return;\n }\n\n // For continuation lines, check consistency\n if (hasSeenContent && afterIndent.trim().length > 0) {\n if (currentSectionIndent === null) {\n // First indented line in this section, set the indent level\n currentSectionIndent = indentAmount;\n } else if (indentAmount < currentSectionIndent) {\n // Indentation is less than the established level (inconsistent)\n report('There must be no indentation.', null, {\n line: getLineNumber(lines, lineIndex),\n });\n return;\n }\n }\n } else if (/^\\s*\\*\\s+\\S/v.test(line)) {\n // No indentation on this line, reset section indent tracking\n // (unless it's just whitespace or a closing comment)\n currentSectionIndent = null;\n }\n\n // Track if we've seen any content (non-whitespace after the *)\n if (/^\\s*\\*\\s+\\S/v.test(line)) {\n hasSeenContent = true;\n }\n\n // Reset section indent when we encounter a tag\n if (/@\\w+/v.test(line)) {\n currentSectionIndent = null;\n }\n }\n } else {\n const reg = /^(?:\\/?\\**|[ \\t]*)\\*[ \\t]{2}/gmv;\n if (reg.test(text)) {\n const lineBreaks = text.slice(0, reg.lastIndex).match(/\\n/gv) || [];\n report('There must be no indentation.', null, {\n line: lineBreaks.length,\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid padding inside JSDoc blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-indentation.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowIndentedSections: {\n description: 'Allows indentation of nested sections on subsequent lines (like bullet lists)',\n type: 'boolean',\n },\n excludeTags: {\n description: `Array of tags (e.g., \\`['example', 'description']\\`) whose content will be\n\"hidden\" from the \\`check-indentation\\` rule. Defaults to \\`['example']\\`.\n\nBy default, the whole JSDoc block will be checked for invalid padding.\nThat would include \\`@example\\` blocks too, which can get in the way\nof adding full, readable examples of code without ending up with multiple\nlinting issues.\n\nWhen disabled (by passing \\`excludeTags: []\\` option), the following code *will*\nreport a padding issue:\n\n\\`\\`\\`js\n/**\n * @example\n * anArray.filter((a) => {\n * return a.b;\n * });\n */\n\\`\\`\\``,\n items: {\n pattern: '^\\\\S+$',\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("eslint").Rule.RuleModule;
2
+ export default _default;
3
+ //# sourceMappingURL=checkIndentation.d.ts.map
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _alignTransform = _interopRequireDefault(require("../alignTransform.cjs"));
8
+ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
9
+ var _commentParser = require("comment-parser");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ const {
12
+ flow: commentFlow
13
+ } = _commentParser.transforms;
14
+
15
+ /**
16
+ * Detects if a line starts with a markdown list marker
17
+ * Supports: -, *, numbered lists (1., 2., etc.)
18
+ * This explicitly excludes hyphens that are part of JSDoc tag syntax
19
+ * @param {string} text - The text to check
20
+ * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)
21
+ * @returns {boolean} - True if the text starts with a list marker
22
+ */
23
+ const startsWithListMarker = (text, isFirstLineOfTag = false) => {
24
+ // On the first line of a tag, the hyphen is typically the JSDoc separator,
25
+ // not a list marker
26
+ if (isFirstLineOfTag) {
27
+ return false;
28
+ }
29
+
30
+ // Match lines that start with optional whitespace, then a list marker
31
+ // - or * followed by a space
32
+ // or a number followed by . or ) and a space
33
+ return /^\s*(?:[\-*]|\d+(?:\.|\)))\s+/v.test(text);
34
+ };
35
+
36
+ /**
37
+ * Checks if we should allow extra indentation beyond wrapIndent.
38
+ * This is true for list continuation lines (lines with more indent than wrapIndent
39
+ * that follow a list item).
40
+ * @param {import('comment-parser').Spec} tag - The tag being checked
41
+ * @param {import('../iterateJsdoc.js').Integer} idx - Current line index (0-based in tag.source.slice(1))
42
+ * @returns {boolean} - True if extra indentation should be allowed
43
+ */
44
+ const shouldAllowExtraIndent = (tag, idx) => {
45
+ // Check if any previous line in this tag had a list marker
46
+ // idx is 0-based in the continuation lines (tag.source.slice(1))
47
+ // So tag.source[0] is the tag line, tag.source[idx+1] is current line
48
+ let hasSeenListMarker = false;
49
+
50
+ // Check all lines from the tag line onwards
51
+ for (let lineIdx = 0; lineIdx <= idx + 1; lineIdx++) {
52
+ const line = tag.source[lineIdx];
53
+ const isFirstLine = lineIdx === 0;
54
+ if (line?.tokens?.description && startsWithListMarker(line.tokens.description, isFirstLine)) {
55
+ hasSeenListMarker = true;
56
+ break;
57
+ }
58
+ }
59
+ return hasSeenListMarker;
60
+ };
61
+
62
+ /**
63
+ * @typedef {{
64
+ * postDelimiter: import('../iterateJsdoc.js').Integer,
65
+ * postHyphen: import('../iterateJsdoc.js').Integer,
66
+ * postName: import('../iterateJsdoc.js').Integer,
67
+ * postTag: import('../iterateJsdoc.js').Integer,
68
+ * postType: import('../iterateJsdoc.js').Integer,
69
+ * }} CustomSpacings
70
+ */
71
+
72
+ /**
73
+ * @param {import('../iterateJsdoc.js').Utils} utils
74
+ * @param {import('comment-parser').Spec & {
75
+ * line: import('../iterateJsdoc.js').Integer
76
+ * }} tag
77
+ * @param {CustomSpacings} customSpacings
78
+ */
79
+ const checkNotAlignedPerTag = (utils, tag, customSpacings) => {
80
+ /*
81
+ start +
82
+ delimiter +
83
+ postDelimiter +
84
+ tag +
85
+ postTag +
86
+ type +
87
+ postType +
88
+ name +
89
+ postName +
90
+ description +
91
+ end +
92
+ lineEnd
93
+ */
94
+
95
+ /**
96
+ * @typedef {"tag"|"type"|"name"|"description"} ContentProp
97
+ */
98
+
99
+ /** @type {("postDelimiter"|"postTag"|"postType"|"postName")[]} */
100
+ let spacerProps;
101
+ /** @type {ContentProp[]} */
102
+ let contentProps;
103
+ const mightHaveNamepath = utils.tagMightHaveNameOrNamepath(tag.tag);
104
+ if (mightHaveNamepath) {
105
+ spacerProps = ['postDelimiter', 'postTag', 'postType', 'postName'];
106
+ contentProps = ['tag', 'type', 'name', 'description'];
107
+ } else {
108
+ spacerProps = ['postDelimiter', 'postTag', 'postType'];
109
+ contentProps = ['tag', 'type', 'description'];
110
+ }
111
+ const {
112
+ tokens
113
+ } = tag.source[0];
114
+
115
+ /**
116
+ * @param {import('../iterateJsdoc.js').Integer} idx
117
+ * @param {(notRet: boolean, contentProp: ContentProp) => void} [callbck]
118
+ */
119
+ const followedBySpace = (idx, callbck) => {
120
+ const nextIndex = idx + 1;
121
+ return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {
122
+ const contentProp = contentProps[nextIndex + innerIdx];
123
+ const spacePropVal = tokens[spacerProp];
124
+ const ret = spacePropVal;
125
+ if (callbck) {
126
+ callbck(!ret, contentProp);
127
+ }
128
+ return ret && (callbck || !contentProp);
129
+ });
130
+ };
131
+ const postHyphenSpacing = customSpacings?.postHyphen ?? 1;
132
+ const exactHyphenSpacing = new RegExp(`^\\s*-\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\s)`, 'v');
133
+ const hasNoHyphen = !/^\s*-(?!$)(?=\s)/v.test(tokens.description);
134
+ const hasExactHyphenSpacing = exactHyphenSpacing.test(tokens.description);
135
+
136
+ // If checking alignment on multiple lines, need to check other `source`
137
+ // items
138
+ // Go through `post*` spacing properties and exit to indicate problem if
139
+ // extra spacing detected
140
+ const ok = !spacerProps.some((spacerProp, idx) => {
141
+ const contentProp = contentProps[idx];
142
+ const contentPropVal = tokens[contentProp];
143
+ const spacerPropVal = tokens[spacerProp];
144
+ const spacing = customSpacings?.[spacerProp] || 1;
145
+
146
+ // There will be extra alignment if...
147
+
148
+ // 1. The spaces don't match the space it should have (1 or custom spacing) OR
149
+ return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||
150
+ // 2. There is a (single) space, no immediate content, and yet another
151
+ // space is found subsequently (not separated by intervening content)
152
+ spacerPropVal && !contentPropVal && followedBySpace(idx);
153
+ }) && (hasNoHyphen || hasExactHyphenSpacing);
154
+ if (ok) {
155
+ return;
156
+ }
157
+ const fix = () => {
158
+ for (const [idx, spacerProp] of spacerProps.entries()) {
159
+ const contentProp = contentProps[idx];
160
+ const contentPropVal = tokens[contentProp];
161
+ if (contentPropVal) {
162
+ const spacing = customSpacings?.[spacerProp] || 1;
163
+ tokens[spacerProp] = ''.padStart(spacing, ' ');
164
+ followedBySpace(idx, (hasSpace, contentPrp) => {
165
+ if (hasSpace) {
166
+ tokens[contentPrp] = '';
167
+ }
168
+ });
169
+ } else {
170
+ tokens[spacerProp] = '';
171
+ }
172
+ }
173
+ if (!hasExactHyphenSpacing) {
174
+ const hyphenSpacing = /^\s*-\s+/v;
175
+ tokens.description = tokens.description.replace(hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '));
176
+ }
177
+ utils.setTag(tag, tokens);
178
+ };
179
+ utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);
180
+ };
181
+
182
+ /**
183
+ * @param {object} cfg
184
+ * @param {CustomSpacings} cfg.customSpacings
185
+ * @param {string} cfg.indent
186
+ * @param {import('comment-parser').Block} cfg.jsdoc
187
+ * @param {import('eslint').Rule.Node & {
188
+ * range: [number, number]
189
+ * }} cfg.jsdocNode
190
+ * @param {boolean} cfg.preserveMainDescriptionPostDelimiter
191
+ * @param {import('../iterateJsdoc.js').Report} cfg.report
192
+ * @param {string[]} cfg.tags
193
+ * @param {import('../iterateJsdoc.js').Utils} cfg.utils
194
+ * @param {string} cfg.wrapIndent
195
+ * @param {boolean} cfg.disableWrapIndent
196
+ * @returns {void}
197
+ */
198
+ const checkAlignment = ({
199
+ customSpacings,
200
+ disableWrapIndent,
201
+ indent,
202
+ jsdoc,
203
+ jsdocNode,
204
+ preserveMainDescriptionPostDelimiter,
205
+ report,
206
+ tags,
207
+ utils,
208
+ wrapIndent
209
+ }) => {
210
+ const transform = commentFlow((0, _alignTransform.default)({
211
+ customSpacings,
212
+ disableWrapIndent,
213
+ indent,
214
+ preserveMainDescriptionPostDelimiter,
215
+ tags,
216
+ wrapIndent
217
+ }));
218
+ const transformedJsdoc = transform(jsdoc);
219
+ const comment = '/*' +
220
+ /**
221
+ * @type {import('eslint').Rule.Node & {
222
+ * range: [number, number], value: string
223
+ * }}
224
+ */
225
+ jsdocNode.value + '*/';
226
+ const formatted = utils.stringify(transformedJsdoc).trimStart();
227
+ if (comment !== formatted) {
228
+ report('Expected JSDoc block lines to be aligned.', /** @type {import('eslint').Rule.ReportFixer} */fixer => {
229
+ return fixer.replaceText(jsdocNode, formatted);
230
+ });
231
+ }
232
+ };
233
+ var _default = exports.default = (0, _iterateJsdoc.default)(({
234
+ context,
235
+ indent,
236
+ jsdoc,
237
+ jsdocNode,
238
+ report,
239
+ utils
240
+ }) => {
241
+ const {
242
+ customSpacings,
243
+ disableWrapIndent = false,
244
+ preserveMainDescriptionPostDelimiter,
245
+ tags: applicableTags = ['param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template'],
246
+ wrapIndent = ''
247
+ } = context.options[1] || {};
248
+ if (context.options[0] === 'always') {
249
+ // Skip if it contains only a single line.
250
+ if (!(
251
+ /**
252
+ * @type {import('eslint').Rule.Node & {
253
+ * range: [number, number], value: string
254
+ * }}
255
+ */
256
+ jsdocNode.value.includes('\n'))) {
257
+ return;
258
+ }
259
+ checkAlignment({
260
+ customSpacings,
261
+ disableWrapIndent,
262
+ indent,
263
+ jsdoc,
264
+ jsdocNode,
265
+ preserveMainDescriptionPostDelimiter,
266
+ report,
267
+ tags: applicableTags,
268
+ utils,
269
+ wrapIndent
270
+ });
271
+ return;
272
+ }
273
+ const foundTags = utils.getPresentTags(applicableTags);
274
+ if (context.options[0] !== 'any') {
275
+ for (const tag of foundTags) {
276
+ checkNotAlignedPerTag(utils,
277
+ /**
278
+ * @type {import('comment-parser').Spec & {
279
+ * line: import('../iterateJsdoc.js').Integer
280
+ * }}
281
+ */
282
+ tag, customSpacings);
283
+ }
284
+ }
285
+ for (const tag of foundTags) {
286
+ if (tag.source.length > 1) {
287
+ let idx = 0;
288
+ for (const {
289
+ tokens
290
+ // Avoid the tag line
291
+ } of tag.source.slice(1)) {
292
+ idx++;
293
+ if (!tokens.description ||
294
+ // Avoid first lines after multiline type
295
+ tokens.type || tokens.name) {
296
+ continue;
297
+ }
298
+
299
+ // Don't include a single separating space/tab
300
+ const actualIndent = tokens.postDelimiter.slice(1);
301
+ const hasCorrectWrapIndent = actualIndent === wrapIndent;
302
+
303
+ // Allow extra indentation if this line or previous lines contain list markers
304
+ // This preserves nested list structure
305
+ const hasExtraIndent = actualIndent.length > wrapIndent.length && actualIndent.startsWith(wrapIndent);
306
+ const isInListContext = shouldAllowExtraIndent(tag, idx - 1);
307
+ if (!disableWrapIndent && !hasCorrectWrapIndent && !(hasExtraIndent && isInListContext)) {
308
+ utils.reportJSDoc('Expected wrap indent', {
309
+ line: tag.source[0].number + idx
310
+ }, () => {
311
+ tokens.postDelimiter = tokens.postDelimiter.charAt(0) + wrapIndent;
312
+ });
313
+ return;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }, {
319
+ iterateAllJsdocs: true,
320
+ meta: {
321
+ docs: {
322
+ description: 'Reports invalid alignment of JSDoc block lines.',
323
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header'
324
+ },
325
+ fixable: 'whitespace',
326
+ schema: [{
327
+ description: `If the string value is
328
+ \`"always"\` then a problem is raised when the lines are not aligned.
329
+ If it is \`"never"\` then a problem should be raised when there is more than
330
+ one space between each line's parts. If it is \`"any"\`, no alignment is made.
331
+ Defaults to \`"never"\`.
332
+
333
+ Note that in addition to alignment, the "never" and "always" options will both
334
+ ensure that at least one space is present after the asterisk delimiter.`,
335
+ enum: ['always', 'never', 'any'],
336
+ type: 'string'
337
+ }, {
338
+ additionalProperties: false,
339
+ properties: {
340
+ customSpacings: {
341
+ additionalProperties: false,
342
+ description: `An object with any of the following spacing keys set to an integer.
343
+ If a spacing is not defined, it defaults to one.`,
344
+ properties: {
345
+ postDelimiter: {
346
+ description: 'Affects spacing after the asterisk (e.g., `* @param`)',
347
+ type: 'integer'
348
+ },
349
+ postHyphen: {
350
+ description: 'Affects spacing after any hyphens in the description (e.g., `* @param {someType} name - A description`)',
351
+ type: 'integer'
352
+ },
353
+ postName: {
354
+ description: 'Affects spacing after the name (e.g., `* @param {someType} name `)',
355
+ type: 'integer'
356
+ },
357
+ postTag: {
358
+ description: 'Affects spacing after the tag (e.g., `* @param `)',
359
+ type: 'integer'
360
+ },
361
+ postType: {
362
+ description: 'Affects spacing after the type (e.g., `* @param {someType} `)',
363
+ type: 'integer'
364
+ }
365
+ },
366
+ type: 'object'
367
+ },
368
+ disableWrapIndent: {
369
+ description: 'Disables `wrapIndent`; existing wrap indentation is preserved without changes.',
370
+ type: 'boolean'
371
+ },
372
+ preserveMainDescriptionPostDelimiter: {
373
+ default: false,
374
+ description: `A boolean to determine whether to preserve the post-delimiter spacing of the
375
+ main description. If \`false\` or unset, will be set to a single space.`,
376
+ type: 'boolean'
377
+ },
378
+ tags: {
379
+ description: `Use this to change the tags which are sought for alignment changes. Defaults to an array of
380
+ \`['param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template']\`.`,
381
+ items: {
382
+ type: 'string'
383
+ },
384
+ type: 'array'
385
+ },
386
+ wrapIndent: {
387
+ description: `The indent that will be applied for tag text after the first line.
388
+ Default to the empty string (no indent).`,
389
+ type: 'string'
390
+ }
391
+ },
392
+ type: 'object'
393
+ }],
394
+ type: 'layout'
395
+ }
396
+ });
397
+ module.exports = exports.default;
398
+ //# sourceMappingURL=checkLineAlignment.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkLineAlignment.cjs","names":["_alignTransform","_interopRequireDefault","require","_iterateJsdoc","_commentParser","e","__esModule","default","flow","commentFlow","transforms","startsWithListMarker","text","isFirstLineOfTag","test","shouldAllowExtraIndent","tag","idx","hasSeenListMarker","lineIdx","line","source","isFirstLine","tokens","description","checkNotAlignedPerTag","utils","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNameOrNamepath","followedBySpace","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","disableWrapIndent","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","exports","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","actualIndent","postDelimiter","hasCorrectWrapIndent","hasExtraIndent","startsWith","isInListContext","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import alignTransform from '../alignTransform.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\nimport {\n transforms,\n} from 'comment-parser';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\n/**\n * Detects if a line starts with a markdown list marker\n * Supports: -, *, numbered lists (1., 2., etc.)\n * This explicitly excludes hyphens that are part of JSDoc tag syntax\n * @param {string} text - The text to check\n * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)\n * @returns {boolean} - True if the text starts with a list marker\n */\nconst startsWithListMarker = (text, isFirstLineOfTag = false) => {\n // On the first line of a tag, the hyphen is typically the JSDoc separator,\n // not a list marker\n if (isFirstLineOfTag) {\n return false;\n }\n\n // Match lines that start with optional whitespace, then a list marker\n // - or * followed by a space\n // or a number followed by . or ) and a space\n return /^\\s*(?:[\\-*]|\\d+(?:\\.|\\)))\\s+/v.test(text);\n};\n\n/**\n * Checks if we should allow extra indentation beyond wrapIndent.\n * This is true for list continuation lines (lines with more indent than wrapIndent\n * that follow a list item).\n * @param {import('comment-parser').Spec} tag - The tag being checked\n * @param {import('../iterateJsdoc.js').Integer} idx - Current line index (0-based in tag.source.slice(1))\n * @returns {boolean} - True if extra indentation should be allowed\n */\nconst shouldAllowExtraIndent = (tag, idx) => {\n // Check if any previous line in this tag had a list marker\n // idx is 0-based in the continuation lines (tag.source.slice(1))\n // So tag.source[0] is the tag line, tag.source[idx+1] is current line\n let hasSeenListMarker = false;\n\n // Check all lines from the tag line onwards\n for (let lineIdx = 0; lineIdx <= idx + 1; lineIdx++) {\n const line = tag.source[lineIdx];\n const isFirstLine = lineIdx === 0;\n if (line?.tokens?.description && startsWithListMarker(line.tokens.description, isFirstLine)) {\n hasSeenListMarker = true;\n break;\n }\n }\n\n return hasSeenListMarker;\n};\n\n/**\n * @typedef {{\n * postDelimiter: import('../iterateJsdoc.js').Integer,\n * postHyphen: import('../iterateJsdoc.js').Integer,\n * postName: import('../iterateJsdoc.js').Integer,\n * postTag: import('../iterateJsdoc.js').Integer,\n * postType: import('../iterateJsdoc.js').Integer,\n * }} CustomSpacings\n */\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }} tag\n * @param {CustomSpacings} customSpacings\n */\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n\n /**\n * @typedef {\"tag\"|\"type\"|\"name\"|\"description\"} ContentProp\n */\n\n /** @type {(\"postDelimiter\"|\"postTag\"|\"postType\"|\"postName\")[]} */\n let spacerProps;\n /** @type {ContentProp[]} */\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNameOrNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n /**\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @param {(notRet: boolean, contentProp: ContentProp) => void} [callbck]\n */\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'v');\n const hasNoHyphen = !(/^\\s*-(?!$)(?=\\s)/v).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s+/v;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\n/**\n * @param {object} cfg\n * @param {CustomSpacings} cfg.customSpacings\n * @param {string} cfg.indent\n * @param {import('comment-parser').Block} cfg.jsdoc\n * @param {import('eslint').Rule.Node & {\n * range: [number, number]\n * }} cfg.jsdocNode\n * @param {boolean} cfg.preserveMainDescriptionPostDelimiter\n * @param {import('../iterateJsdoc.js').Report} cfg.report\n * @param {string[]} cfg.tags\n * @param {import('../iterateJsdoc.js').Utils} cfg.utils\n * @param {string} cfg.wrapIndent\n * @param {boolean} cfg.disableWrapIndent\n * @returns {void}\n */\nconst checkAlignment = ({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n disableWrapIndent,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' +\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */ (jsdocNode).value + '*/';\n\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n jsdocNode,\n report,\n utils,\n}) => {\n const {\n customSpacings,\n disableWrapIndent = false,\n preserveMainDescriptionPostDelimiter,\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template',\n ],\n wrapIndent = '',\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!(\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */\n (jsdocNode).value.includes('\\n')\n )) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(\n utils,\n /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }}\n */\n (tag),\n customSpacings,\n );\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n const actualIndent = tokens.postDelimiter.slice(1);\n const hasCorrectWrapIndent = actualIndent === wrapIndent;\n\n // Allow extra indentation if this line or previous lines contain list markers\n // This preserves nested list structure\n const hasExtraIndent = actualIndent.length > wrapIndent.length &&\n actualIndent.startsWith(wrapIndent);\n const isInListContext = shouldAllowExtraIndent(tag, idx - 1);\n\n if (!disableWrapIndent && !hasCorrectWrapIndent &&\n !(hasExtraIndent && isInListContext)) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt(0) + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [\n {\n description: `If the string value is\n\\`\"always\"\\` then a problem is raised when the lines are not aligned.\nIf it is \\`\"never\"\\` then a problem should be raised when there is more than\none space between each line's parts. If it is \\`\"any\"\\`, no alignment is made.\nDefaults to \\`\"never\"\\`.\n\nNote that in addition to alignment, the \"never\" and \"always\" options will both\nensure that at least one space is present after the asterisk delimiter.`,\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n description: `An object with any of the following spacing keys set to an integer.\nIf a spacing is not defined, it defaults to one.`,\n properties: {\n postDelimiter: {\n description: 'Affects spacing after the asterisk (e.g., `* @param`)',\n type: 'integer',\n },\n postHyphen: {\n description: 'Affects spacing after any hyphens in the description (e.g., `* @param {someType} name - A description`)',\n type: 'integer',\n },\n postName: {\n description: 'Affects spacing after the name (e.g., `* @param {someType} name `)',\n type: 'integer',\n },\n postTag: {\n description: 'Affects spacing after the tag (e.g., `* @param `)',\n type: 'integer',\n },\n postType: {\n description: 'Affects spacing after the type (e.g., `* @param {someType} `)',\n type: 'integer',\n },\n },\n type: 'object',\n },\n disableWrapIndent: {\n description: 'Disables `wrapIndent`; existing wrap indentation is preserved without changes.',\n type: 'boolean',\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n description: `A boolean to determine whether to preserve the post-delimiter spacing of the\nmain description. If \\`false\\` or unset, will be set to a single space.`,\n type: 'boolean',\n },\n tags: {\n description: `Use this to change the tags which are sought for alignment changes. Defaults to an array of\n\\`['param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template']\\`.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n description: `The indent that will be applied for tag text after the first line.\nDefault to the empty string (no indent).`,\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ declare const _default: import("eslint").Rule.RuleModule;
2
+ export default _default;
3
+ export type CustomSpacings = {
4
+ postDelimiter: import("../iterateJsdoc.js").Integer;
5
+ postHyphen: import("../iterateJsdoc.js").Integer;
6
+ postName: import("../iterateJsdoc.js").Integer;
7
+ postTag: import("../iterateJsdoc.js").Integer;
8
+ postType: import("../iterateJsdoc.js").Integer;
9
+ };
10
+ //# sourceMappingURL=checkLineAlignment.d.ts.map