eslint-plugin-jsdoc 52.0.4 → 53.0.1

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 (359) hide show
  1. package/dist/WarnSettings.cjs +18 -35
  2. package/dist/WarnSettings.cjs.map +1 -1
  3. package/dist/WarnSettings.js +20 -0
  4. package/dist/WarnSettings.js.map +1 -0
  5. package/dist/_virtual/rolldown_runtime.cjs +32 -0
  6. package/dist/_virtual/rolldown_runtime.js +11 -0
  7. package/dist/alignTransform.cjs +224 -305
  8. package/dist/alignTransform.cjs.map +1 -1
  9. package/dist/alignTransform.js +241 -0
  10. package/dist/alignTransform.js.map +1 -0
  11. package/dist/defaultTagOrder.cjs +132 -43
  12. package/dist/defaultTagOrder.cjs.map +1 -1
  13. package/dist/defaultTagOrder.js +134 -0
  14. package/dist/defaultTagOrder.js.map +1 -0
  15. package/dist/exportParser.cjs +478 -696
  16. package/dist/exportParser.cjs.map +1 -1
  17. package/dist/exportParser.js +518 -0
  18. package/dist/exportParser.js.map +1 -0
  19. package/dist/getDefaultTagStructureForMode.cjs +184 -288
  20. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  21. package/dist/getDefaultTagStructureForMode.js +188 -0
  22. package/dist/getDefaultTagStructureForMode.js.map +1 -0
  23. package/dist/getJsdocProcessorPlugin.cjs +364 -550
  24. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  25. package/dist/getJsdocProcessorPlugin.d.cts +70 -0
  26. package/dist/getJsdocProcessorPlugin.d.cts.map +1 -0
  27. package/dist/getJsdocProcessorPlugin.d.ts +68 -65
  28. package/dist/getJsdocProcessorPlugin.d.ts.map +1 -1
  29. package/dist/getJsdocProcessorPlugin.js +383 -0
  30. package/dist/getJsdocProcessorPlugin.js.map +1 -0
  31. package/dist/index.cjs +2 -410
  32. package/dist/index.d.cts +2 -0
  33. package/dist/index.d.ts +2 -17
  34. package/dist/index.js +3 -0
  35. package/dist/iterateJsdoc.cjs +1539 -1988
  36. package/dist/iterateJsdoc.cjs.map +1 -1
  37. package/dist/iterateJsdoc.d.cts +472 -0
  38. package/dist/iterateJsdoc.d.cts.map +1 -0
  39. package/dist/iterateJsdoc.d.ts +359 -349
  40. package/dist/iterateJsdoc.d.ts.map +1 -1
  41. package/dist/iterateJsdoc.js +1628 -0
  42. package/dist/iterateJsdoc.js.map +1 -0
  43. package/dist/jsdocUtils.cjs +1009 -1376
  44. package/dist/jsdocUtils.cjs.map +1 -1
  45. package/dist/jsdocUtils.js +1123 -0
  46. package/dist/jsdocUtils.js.map +1 -0
  47. package/dist/plugin.cjs +427 -0
  48. package/dist/plugin.cjs.map +1 -0
  49. package/dist/plugin.js +427 -0
  50. package/dist/plugin.js.map +1 -0
  51. package/dist/rules/checkAccess.cjs +29 -36
  52. package/dist/rules/checkAccess.cjs.map +1 -1
  53. package/dist/rules/checkAccess.js +33 -0
  54. package/dist/rules/checkAccess.js.map +1 -0
  55. package/dist/rules/checkAlignment.cjs +41 -54
  56. package/dist/rules/checkAlignment.cjs.map +1 -1
  57. package/dist/rules/checkAlignment.js +47 -0
  58. package/dist/rules/checkAlignment.js.map +1 -0
  59. package/dist/rules/checkExamples.cjs +327 -484
  60. package/dist/rules/checkExamples.cjs.map +1 -1
  61. package/dist/rules/checkExamples.js +348 -0
  62. package/dist/rules/checkExamples.js.map +1 -0
  63. package/dist/rules/checkIndentation.cjs +50 -65
  64. package/dist/rules/checkIndentation.cjs.map +1 -1
  65. package/dist/rules/checkIndentation.js +59 -0
  66. package/dist/rules/checkIndentation.js.map +1 -0
  67. package/dist/rules/checkLineAlignment.cjs +220 -311
  68. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  69. package/dist/rules/checkLineAlignment.js +229 -0
  70. package/dist/rules/checkLineAlignment.js.map +1 -0
  71. package/dist/rules/checkParamNames.cjs +227 -335
  72. package/dist/rules/checkParamNames.cjs.map +1 -1
  73. package/dist/rules/checkParamNames.js +237 -0
  74. package/dist/rules/checkParamNames.js.map +1 -0
  75. package/dist/rules/checkPropertyNames.cjs +78 -106
  76. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  77. package/dist/rules/checkPropertyNames.js +88 -0
  78. package/dist/rules/checkPropertyNames.js.map +1 -0
  79. package/dist/rules/checkSyntax.cjs +21 -34
  80. package/dist/rules/checkSyntax.cjs.map +1 -1
  81. package/dist/rules/checkSyntax.js +25 -0
  82. package/dist/rules/checkSyntax.js.map +1 -0
  83. package/dist/rules/checkTagNames.cjs +188 -210
  84. package/dist/rules/checkTagNames.cjs.map +1 -1
  85. package/dist/rules/checkTagNames.js +191 -0
  86. package/dist/rules/checkTagNames.js.map +1 -0
  87. package/dist/rules/checkTemplateNames.cjs +121 -178
  88. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  89. package/dist/rules/checkTemplateNames.js +124 -0
  90. package/dist/rules/checkTemplateNames.js.map +1 -0
  91. package/dist/rules/checkTypes.cjs +291 -385
  92. package/dist/rules/checkTypes.cjs.map +1 -1
  93. package/dist/rules/checkTypes.js +299 -0
  94. package/dist/rules/checkTypes.js.map +1 -0
  95. package/dist/rules/checkValues.cjs +100 -146
  96. package/dist/rules/checkValues.cjs.map +1 -1
  97. package/dist/rules/checkValues.js +103 -0
  98. package/dist/rules/checkValues.js.map +1 -0
  99. package/dist/rules/convertToJsdocComments.cjs +228 -306
  100. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  101. package/dist/rules/convertToJsdocComments.js +231 -0
  102. package/dist/rules/convertToJsdocComments.js.map +1 -0
  103. package/dist/rules/emptyTags.cjs +62 -72
  104. package/dist/rules/emptyTags.cjs.map +1 -1
  105. package/dist/rules/emptyTags.js +67 -0
  106. package/dist/rules/emptyTags.js.map +1 -0
  107. package/dist/rules/implementsOnClasses.cjs +36 -56
  108. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  109. package/dist/rules/implementsOnClasses.js +40 -0
  110. package/dist/rules/implementsOnClasses.js.map +1 -0
  111. package/dist/rules/importsAsDependencies.cjs +62 -99
  112. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  113. package/dist/rules/importsAsDependencies.js +68 -0
  114. package/dist/rules/importsAsDependencies.js.map +1 -0
  115. package/dist/rules/informativeDocs.cjs +105 -142
  116. package/dist/rules/informativeDocs.cjs.map +1 -1
  117. package/dist/rules/informativeDocs.js +110 -0
  118. package/dist/rules/informativeDocs.js.map +1 -0
  119. package/dist/rules/linesBeforeBlock.cjs +70 -105
  120. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  121. package/dist/rules/linesBeforeBlock.js +75 -0
  122. package/dist/rules/linesBeforeBlock.js.map +1 -0
  123. package/dist/rules/matchDescription.cjs +160 -222
  124. package/dist/rules/matchDescription.cjs.map +1 -1
  125. package/dist/rules/matchDescription.js +167 -0
  126. package/dist/rules/matchDescription.js.map +1 -0
  127. package/dist/rules/matchName.cjs +73 -128
  128. package/dist/rules/matchName.cjs.map +1 -1
  129. package/dist/rules/matchName.js +77 -0
  130. package/dist/rules/matchName.js.map +1 -0
  131. package/dist/rules/multilineBlocks.cjs +235 -352
  132. package/dist/rules/multilineBlocks.cjs.map +1 -1
  133. package/dist/rules/multilineBlocks.js +245 -0
  134. package/dist/rules/multilineBlocks.js.map +1 -0
  135. package/dist/rules/noBadBlocks.cjs +63 -86
  136. package/dist/rules/noBadBlocks.cjs.map +1 -1
  137. package/dist/rules/noBadBlocks.js +68 -0
  138. package/dist/rules/noBadBlocks.js.map +1 -0
  139. package/dist/rules/noBlankBlockDescriptions.cjs +35 -57
  140. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  141. package/dist/rules/noBlankBlockDescriptions.js +41 -0
  142. package/dist/rules/noBlankBlockDescriptions.js.map +1 -0
  143. package/dist/rules/noBlankBlocks.cjs +26 -48
  144. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  145. package/dist/rules/noBlankBlocks.js +30 -0
  146. package/dist/rules/noBlankBlocks.js.map +1 -0
  147. package/dist/rules/noDefaults.cjs +52 -79
  148. package/dist/rules/noDefaults.cjs.map +1 -1
  149. package/dist/rules/noDefaults.js +56 -0
  150. package/dist/rules/noDefaults.js.map +1 -0
  151. package/dist/rules/noMissingSyntax.cjs +115 -165
  152. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  153. package/dist/rules/noMissingSyntax.js +126 -0
  154. package/dist/rules/noMissingSyntax.js.map +1 -0
  155. package/dist/rules/noMultiAsterisks.cjs +48 -89
  156. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  157. package/dist/rules/noMultiAsterisks.js +58 -0
  158. package/dist/rules/noMultiAsterisks.js.map +1 -0
  159. package/dist/rules/noRestrictedSyntax.cjs +45 -79
  160. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  161. package/dist/rules/noRestrictedSyntax.js +49 -0
  162. package/dist/rules/noRestrictedSyntax.js.map +1 -0
  163. package/dist/rules/noTypes.cjs +59 -80
  164. package/dist/rules/noTypes.cjs.map +1 -1
  165. package/dist/rules/noTypes.js +65 -0
  166. package/dist/rules/noTypes.js.map +1 -0
  167. package/dist/rules/noUndefinedTypes.cjs +297 -388
  168. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  169. package/dist/rules/noUndefinedTypes.js +303 -0
  170. package/dist/rules/noUndefinedTypes.js.map +1 -0
  171. package/dist/rules/requireAsteriskPrefix.cjs +108 -159
  172. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  173. package/dist/rules/requireAsteriskPrefix.js +112 -0
  174. package/dist/rules/requireAsteriskPrefix.js.map +1 -0
  175. package/dist/rules/requireDescription.cjs +89 -129
  176. package/dist/rules/requireDescription.cjs.map +1 -1
  177. package/dist/rules/requireDescription.js +95 -0
  178. package/dist/rules/requireDescription.js.map +1 -0
  179. package/dist/rules/requireDescriptionCompleteSentence.cjs +201 -262
  180. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  181. package/dist/rules/requireDescriptionCompleteSentence.js +220 -0
  182. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -0
  183. package/dist/rules/requireExample.cjs +73 -104
  184. package/dist/rules/requireExample.cjs.map +1 -1
  185. package/dist/rules/requireExample.js +77 -0
  186. package/dist/rules/requireExample.js.map +1 -0
  187. package/dist/rules/requireFileOverview.cjs +75 -129
  188. package/dist/rules/requireFileOverview.cjs.map +1 -1
  189. package/dist/rules/requireFileOverview.js +81 -0
  190. package/dist/rules/requireFileOverview.js.map +1 -0
  191. package/dist/rules/requireHyphenBeforeParamDescription.cjs +85 -133
  192. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  193. package/dist/rules/requireHyphenBeforeParamDescription.js +89 -0
  194. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -0
  195. package/dist/rules/requireJsdoc.cjs +384 -557
  196. package/dist/rules/requireJsdoc.cjs.map +1 -1
  197. package/dist/rules/requireJsdoc.js +404 -0
  198. package/dist/rules/requireJsdoc.js.map +1 -0
  199. package/dist/rules/requireParam.cjs +336 -526
  200. package/dist/rules/requireParam.cjs.map +1 -1
  201. package/dist/rules/requireParam.js +344 -0
  202. package/dist/rules/requireParam.js.map +1 -0
  203. package/dist/rules/requireParamDescription.cjs +55 -80
  204. package/dist/rules/requireParamDescription.cjs.map +1 -1
  205. package/dist/rules/requireParamDescription.js +59 -0
  206. package/dist/rules/requireParamDescription.js.map +1 -0
  207. package/dist/rules/requireParamName.cjs +32 -50
  208. package/dist/rules/requireParamName.cjs.map +1 -1
  209. package/dist/rules/requireParamName.js +36 -0
  210. package/dist/rules/requireParamName.js.map +1 -0
  211. package/dist/rules/requireParamType.cjs +55 -80
  212. package/dist/rules/requireParamType.cjs.map +1 -1
  213. package/dist/rules/requireParamType.js +59 -0
  214. package/dist/rules/requireParamType.js.map +1 -0
  215. package/dist/rules/requireProperty.cjs +31 -42
  216. package/dist/rules/requireProperty.cjs.map +1 -1
  217. package/dist/rules/requireProperty.js +35 -0
  218. package/dist/rules/requireProperty.js.map +1 -0
  219. package/dist/rules/requirePropertyDescription.cjs +17 -25
  220. package/dist/rules/requirePropertyDescription.cjs.map +1 -1
  221. package/dist/rules/requirePropertyDescription.js +21 -0
  222. package/dist/rules/requirePropertyDescription.js.map +1 -0
  223. package/dist/rules/requirePropertyName.cjs +17 -25
  224. package/dist/rules/requirePropertyName.cjs.map +1 -1
  225. package/dist/rules/requirePropertyName.js +21 -0
  226. package/dist/rules/requirePropertyName.js.map +1 -0
  227. package/dist/rules/requirePropertyType.cjs +17 -25
  228. package/dist/rules/requirePropertyType.cjs.map +1 -1
  229. package/dist/rules/requirePropertyType.js +21 -0
  230. package/dist/rules/requirePropertyType.js.map +1 -0
  231. package/dist/rules/requireReturns.cjs +125 -203
  232. package/dist/rules/requireReturns.cjs.map +1 -1
  233. package/dist/rules/requireReturns.js +131 -0
  234. package/dist/rules/requireReturns.js.map +1 -0
  235. package/dist/rules/requireReturnsCheck.cjs +60 -103
  236. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  237. package/dist/rules/requireReturnsCheck.js +66 -0
  238. package/dist/rules/requireReturnsCheck.js.map +1 -0
  239. package/dist/rules/requireReturnsDescription.cjs +39 -54
  240. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  241. package/dist/rules/requireReturnsDescription.js +43 -0
  242. package/dist/rules/requireReturnsDescription.js.map +1 -0
  243. package/dist/rules/requireReturnsType.cjs +32 -50
  244. package/dist/rules/requireReturnsType.cjs.map +1 -1
  245. package/dist/rules/requireReturnsType.js +36 -0
  246. package/dist/rules/requireReturnsType.js.map +1 -0
  247. package/dist/rules/requireTemplate.cjs +119 -178
  248. package/dist/rules/requireTemplate.cjs.map +1 -1
  249. package/dist/rules/requireTemplate.js +122 -0
  250. package/dist/rules/requireTemplate.js.map +1 -0
  251. package/dist/rules/requireThrows.cjs +61 -95
  252. package/dist/rules/requireThrows.cjs.map +1 -1
  253. package/dist/rules/requireThrows.js +67 -0
  254. package/dist/rules/requireThrows.js.map +1 -0
  255. package/dist/rules/requireYields.cjs +106 -166
  256. package/dist/rules/requireYields.cjs.map +1 -1
  257. package/dist/rules/requireYields.js +115 -0
  258. package/dist/rules/requireYields.js.map +1 -0
  259. package/dist/rules/requireYieldsCheck.cjs +96 -152
  260. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  261. package/dist/rules/requireYieldsCheck.js +105 -0
  262. package/dist/rules/requireYieldsCheck.js.map +1 -0
  263. package/dist/rules/sortTags.cjs +258 -444
  264. package/dist/rules/sortTags.cjs.map +1 -1
  265. package/dist/rules/sortTags.js +262 -0
  266. package/dist/rules/sortTags.js.map +1 -0
  267. package/dist/rules/tagLines.cjs +179 -266
  268. package/dist/rules/tagLines.cjs.map +1 -1
  269. package/dist/rules/tagLines.js +183 -0
  270. package/dist/rules/tagLines.js.map +1 -0
  271. package/dist/rules/textEscaping.cjs +92 -127
  272. package/dist/rules/textEscaping.cjs.map +1 -1
  273. package/dist/rules/textEscaping.js +102 -0
  274. package/dist/rules/textEscaping.js.map +1 -0
  275. package/dist/rules/validTypes.cjs +252 -265
  276. package/dist/rules/validTypes.cjs.map +1 -1
  277. package/dist/rules/validTypes.js +259 -0
  278. package/dist/rules/validTypes.js.map +1 -0
  279. package/dist/tagNames.cjs +134 -170
  280. package/dist/tagNames.cjs.map +1 -1
  281. package/dist/tagNames.js +144 -0
  282. package/dist/tagNames.js.map +1 -0
  283. package/dist/utils/hasReturnValue.cjs +246 -474
  284. package/dist/utils/hasReturnValue.cjs.map +1 -1
  285. package/dist/utils/hasReturnValue.js +265 -0
  286. package/dist/utils/hasReturnValue.js.map +1 -0
  287. package/package.json +40 -24
  288. package/dist/generateRule.cjs +0 -242
  289. package/dist/generateRule.cjs.map +0 -1
  290. package/dist/index.cjs.map +0 -1
  291. package/dist/index.d.ts.map +0 -1
  292. package/src/WarnSettings.js +0 -34
  293. package/src/alignTransform.js +0 -358
  294. package/src/defaultTagOrder.js +0 -169
  295. package/src/exportParser.js +0 -978
  296. package/src/getDefaultTagStructureForMode.js +0 -969
  297. package/src/getJsdocProcessorPlugin.js +0 -672
  298. package/src/index.js +0 -530
  299. package/src/iterateJsdoc.js +0 -2518
  300. package/src/jsdocUtils.js +0 -1896
  301. package/src/rules/checkAccess.js +0 -45
  302. package/src/rules/checkAlignment.js +0 -63
  303. package/src/rules/checkExamples.js +0 -589
  304. package/src/rules/checkIndentation.js +0 -75
  305. package/src/rules/checkLineAlignment.js +0 -372
  306. package/src/rules/checkParamNames.js +0 -474
  307. package/src/rules/checkPropertyNames.js +0 -152
  308. package/src/rules/checkSyntax.js +0 -30
  309. package/src/rules/checkTagNames.js +0 -314
  310. package/src/rules/checkTemplateNames.js +0 -204
  311. package/src/rules/checkTypes.js +0 -535
  312. package/src/rules/checkValues.js +0 -248
  313. package/src/rules/convertToJsdocComments.js +0 -398
  314. package/src/rules/emptyTags.js +0 -98
  315. package/src/rules/implementsOnClasses.js +0 -64
  316. package/src/rules/importsAsDependencies.js +0 -133
  317. package/src/rules/informativeDocs.js +0 -189
  318. package/src/rules/linesBeforeBlock.js +0 -134
  319. package/src/rules/matchDescription.js +0 -286
  320. package/src/rules/matchName.js +0 -151
  321. package/src/rules/multilineBlocks.js +0 -493
  322. package/src/rules/noBadBlocks.js +0 -119
  323. package/src/rules/noBlankBlockDescriptions.js +0 -69
  324. package/src/rules/noBlankBlocks.js +0 -53
  325. package/src/rules/noDefaults.js +0 -85
  326. package/src/rules/noMissingSyntax.js +0 -195
  327. package/src/rules/noMultiAsterisks.js +0 -134
  328. package/src/rules/noRestrictedSyntax.js +0 -91
  329. package/src/rules/noTypes.js +0 -93
  330. package/src/rules/noUndefinedTypes.js +0 -543
  331. package/src/rules/requireAsteriskPrefix.js +0 -190
  332. package/src/rules/requireDescription.js +0 -161
  333. package/src/rules/requireDescriptionCompleteSentence.js +0 -335
  334. package/src/rules/requireExample.js +0 -118
  335. package/src/rules/requireFileOverview.js +0 -154
  336. package/src/rules/requireHyphenBeforeParamDescription.js +0 -176
  337. package/src/rules/requireJsdoc.js +0 -743
  338. package/src/rules/requireParam.js +0 -602
  339. package/src/rules/requireParamDescription.js +0 -89
  340. package/src/rules/requireParamName.js +0 -55
  341. package/src/rules/requireParamType.js +0 -89
  342. package/src/rules/requireProperty.js +0 -48
  343. package/src/rules/requirePropertyDescription.js +0 -25
  344. package/src/rules/requirePropertyName.js +0 -25
  345. package/src/rules/requirePropertyType.js +0 -25
  346. package/src/rules/requireReturns.js +0 -238
  347. package/src/rules/requireReturnsCheck.js +0 -145
  348. package/src/rules/requireReturnsDescription.js +0 -59
  349. package/src/rules/requireReturnsType.js +0 -51
  350. package/src/rules/requireTemplate.js +0 -201
  351. package/src/rules/requireThrows.js +0 -111
  352. package/src/rules/requireYields.js +0 -216
  353. package/src/rules/requireYieldsCheck.js +0 -208
  354. package/src/rules/sortTags.js +0 -558
  355. package/src/rules/tagLines.js +0 -359
  356. package/src/rules/textEscaping.js +0 -154
  357. package/src/rules/validTypes.js +0 -401
  358. package/src/tagNames.js +0 -238
  359. package/src/utils/hasReturnValue.js +0 -572
@@ -1 +1 @@
1
- {"version":3,"file":"getJsdocProcessorPlugin.cjs","names":["_jsdocUtils","require","_jsdoccomment","espree","_interopRequireWildcard","_nodeFs","_nodePath","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","version","JSON","parse","readFileSync","join","__dirname","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replaceAll","countChars","ch","match","RegExp","length","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","getJsdocProcessorPlugin","options","allowedLanguagesToProcess","captionRequired","checkDefaults","checkExamples","checkParams","checkProperties","exampleCodeRegex","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","parser","undefined","rejectExampleCodeRegex","sourceType","exampleCodeRegExp","rejectExampleCodeRegExp","getRegexFromString","otherInfo","extraMessages","getTextsAndFileNames","jsdoc","jsFileName","commentLineCols","textsAndFileNames","checkSource","cols","defaultFileName","ext","filename","lines","skipInit","source","sources","tag","line","targetTagName","push","nonJSPrefacingCols","nonJSPrefacingLines","string","addSourceInfo","src","file","number","codeStartLine","codeStartCol","targetSource","getFilenameInfo","includes","replace","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","column","message","ruleId","severity","test","matches","exec","groups","language","toLowerCase","startingIndex","lastStringCount","exampleCode","lastIndex","n0","n1","index","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","meta","name","processors","examples","postprocess","jsMessages","messages","entries","msg","endColumn","endLine","fatal","messageText","codeCtxLine","codeCtxColumn","startLine","startCol","ret","concat","preprocess","ast","parseForESLint","comment","ecmaVersion","jsdocComments","comments","filter","value","map","start","range","textToStart","parseComment","flatMap","error","console","log","supportsAutofix","exports"],"sources":["../src/getJsdocProcessorPlugin.js"],"sourcesContent":["import {\n forEachPreferredTag,\n getPreferredTagName,\n getRegexFromString,\n getTagDescription,\n hasTag,\n} from './jsdocUtils.js';\nimport {\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport * as espree from 'espree';\nimport {\n readFileSync,\n} from 'node:fs';\nimport {\n join,\n} from 'node:path';\n\n/**\n * @import {\n * Integer,\n * JsdocBlockWithInline,\n * } from './iterateJsdoc.js';\n * @import {\n * ESLint,\n * Linter,\n * } from 'eslint';\n */\n\nconst {\n version,\n} = JSON.parse(\n // @ts-expect-error `Buffer` is ok for `JSON.parse`\n readFileSync(join(import.meta.dirname, '../package.json')),\n);\n\n// const zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/v;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst escapeStringRegexp = (str) => {\n return str.replaceAll(/[.*+?^$\\{\\}\\(\\)\\|\\[\\]\\\\]/gv, '\\\\$&');\n};\n\n/**\n * @param {string} str\n * @param {string} ch\n * @returns {Integer}\n */\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/**\n * @param {string} text\n * @returns {[\n * Integer,\n * Integer\n * ]}\n */\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {object} JsdocProcessorOptions\n * @property {boolean} [captionRequired] Require captions for example tags\n * @property {Integer} [paddedIndent] See docs\n * @property {boolean} [checkDefaults] See docs\n * @property {boolean} [checkParams] See docs\n * @property {boolean} [checkExamples] See docs\n * @property {boolean} [checkProperties] See docs\n * @property {string} [matchingFileName] See docs\n * @property {string} [matchingFileNameDefaults] See docs\n * @property {string} [matchingFileNameParams] See docs\n * @property {string} [matchingFileNameProperties] See docs\n * @property {string|RegExp} [exampleCodeRegex] See docs\n * @property {string|RegExp} [rejectExampleCodeRegex] See docs\n * @property {string[]} [allowedLanguagesToProcess] See docs\n * @property {\"script\"|\"module\"} [sourceType] See docs\n * @property {import('eslint').Linter.ESTreeParser|import('eslint').Linter.NonESTreeParser} [parser] See docs\n */\n\n/**\n * We use a function for the ability of the user to pass in a config, but\n * without requiring all users of the plugin to do so.\n * @param {JsdocProcessorOptions} [options]\n * @returns {ESLint.Plugin}\n */\nexport const getJsdocProcessorPlugin = (options = {}) => {\n const {\n allowedLanguagesToProcess = [\n 'js', 'ts', 'javascript', 'typescript',\n ],\n captionRequired = false,\n checkDefaults = false,\n checkExamples = true,\n checkParams = false,\n checkProperties = false,\n exampleCodeRegex = null,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n parser = undefined,\n rejectExampleCodeRegex = null,\n sourceType = 'module',\n } = options;\n\n /** @type {RegExp} */\n let exampleCodeRegExp;\n /** @type {RegExp} */\n let rejectExampleCodeRegExp;\n\n if (exampleCodeRegex) {\n exampleCodeRegExp = typeof exampleCodeRegex === 'string' ?\n getRegexFromString(exampleCodeRegex) :\n exampleCodeRegex;\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegExp = typeof rejectExampleCodeRegex === 'string' ?\n getRegexFromString(rejectExampleCodeRegex) :\n rejectExampleCodeRegex;\n }\n\n /**\n * @type {{\n * targetTagName: string,\n * ext: string,\n * codeStartLine: number,\n * codeStartCol: number,\n * nonJSPrefacingCols: number,\n * commentLineCols: [number, number]\n * }[]}\n */\n const otherInfo = [];\n\n /** @type {import('eslint').Linter.LintMessage[]} */\n let extraMessages = [];\n\n /**\n * @param {JsdocBlockWithInline} jsdoc\n * @param {string} jsFileName\n * @param {[number, number]} commentLineCols\n */\n const getTextsAndFileNames = (jsdoc, jsFileName, commentLineCols) => {\n /**\n * @type {{\n * text: string,\n * filename: string|null|undefined\n * }[]}\n */\n const textsAndFileNames = [];\n\n /**\n * @param {{\n * filename: string|null,\n * defaultFileName: string|undefined,\n * source: string,\n * targetTagName: string,\n * rules?: import('eslint').Linter.RulesRecord|undefined,\n * lines?: Integer,\n * cols?: Integer,\n * skipInit?: boolean,\n * ext: string,\n * sources?: {\n * nonJSPrefacingCols: Integer,\n * nonJSPrefacingLines: Integer,\n * string: string,\n * }[],\n * tag?: import('comment-parser').Spec & {\n * line?: Integer,\n * }|{\n * line: Integer,\n * }\n * }} cfg\n */\n const checkSource = ({\n cols = 0,\n defaultFileName,\n ext,\n filename,\n lines = 0,\n skipInit,\n source,\n sources = [],\n tag = {\n line: 0,\n },\n targetTagName,\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n /**\n * @param {{\n * nonJSPrefacingCols: Integer,\n * nonJSPrefacingLines: Integer,\n * string: string\n * }} cfg\n */\n const addSourceInfo = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const src = paddedIndent ?\n string.replaceAll(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gv'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const file = filename || defaultFileName;\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = /**\n * @type {import('comment-parser').Spec & {\n * line: Integer,\n * }}\n */ (tag).line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n textsAndFileNames.push({\n filename: file,\n text: src,\n });\n otherInfo.push({\n codeStartCol,\n codeStartLine,\n commentLineCols,\n ext,\n nonJSPrefacingCols,\n targetTagName,\n });\n };\n\n for (const targetSource of sources) {\n addSourceInfo(targetSource);\n }\n };\n\n /**\n *\n * @param {string|null} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{\n * defaultFileName: string|undefined,\n * filename: string|null,\n * ext: string\n * }}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\.[^.]*$/v, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n ext,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n forEachPreferredTag(jsdoc, 'default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n forEachPreferredTag(jsdoc, 'param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n forEachPreferredTag(jsdoc, 'property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (!checkExamples) {\n return textsAndFileNames;\n }\n\n const tagName = /** @type {string} */ (getPreferredTagName(jsdoc, {\n tagName: 'example',\n }));\n if (!hasTag(jsdoc, tagName)) {\n return textsAndFileNames;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n forEachPreferredTag(jsdoc, 'example', (tag, targetTagName) => {\n let source = /** @type {string} */ (getTagDescription(tag));\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n extraMessages.push({\n column: commentLineCols[1] + 1,\n line: 1 + commentLineCols[0] + (tag.line ?? tag.source[0].number),\n message: `@${targetTagName} error - Caption is expected for examples.`,\n ruleId: 'jsdoc/example-missing-caption',\n severity: 2,\n });\n return;\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegExp.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegExp.test(source)\n ) {\n return;\n }\n\n // If `allowedLanguagesToProcess` is falsy, all languages should be processed.\n if (allowedLanguagesToProcess) {\n const matches = (/^\\s*```(?<language>\\S+)([\\s\\S]*)```\\s*$/v).exec(source);\n if (matches?.groups && !allowedLanguagesToProcess.includes(\n matches.groups.language.toLowerCase(),\n )) {\n return;\n }\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegExp.lastIndex = 0;\n while ((exampleCode = exampleCodeRegExp.exec(source)) !== null) {\n const {\n '0': n0,\n '1': n1,\n index,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegExp.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegExp.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n\n return textsAndFileNames;\n };\n\n // See https://eslint.org/docs/latest/extend/plugins#processors-in-plugins\n // See https://eslint.org/docs/latest/extend/custom-processors\n // From https://github.com/eslint/eslint/issues/14745#issuecomment-869457265\n /*\n {\n \"files\": [\"*.js\", \"*.ts\"],\n \"processor\": \"jsdoc/example\" // a pretended value here\n },\n {\n \"files\": [\n \"*.js/*_jsdoc-example.js\",\n \"*.ts/*_jsdoc-example.js\",\n \"*.js/*_jsdoc-example.ts\"\n ],\n \"rules\": {\n // specific rules for examples in jsdoc only here\n // And other rules for `.js` and `.ts` will also be enabled for them\n }\n }\n */\n return {\n meta: {\n name: 'eslint-plugin-jsdoc/processor',\n version,\n },\n processors: {\n examples: {\n meta: {\n name: 'eslint-plugin-jsdoc/preprocessor',\n version,\n },\n /**\n * @param {import('eslint').Linter.LintMessage[][]} messages\n * @param {string} filename\n */\n postprocess ([\n jsMessages,\n ...messages\n // eslint-disable-next-line no-unused-vars -- Placeholder\n ], filename) {\n for (const [\n idx,\n message,\n ] of messages.entries()) {\n const {\n codeStartCol,\n codeStartLine,\n commentLineCols,\n nonJSPrefacingCols,\n targetTagName,\n } = otherInfo[idx];\n\n for (const msg of message) {\n const {\n column,\n endColumn,\n endLine,\n fatal,\n line,\n message: messageText,\n ruleId,\n severity,\n\n // Todo: Make fixable\n // fix\n // fix: {range: [number, number], text: string}\n // suggestions: {desc: , messageId:, fix: }[],\n } = msg;\n\n const [\n codeCtxLine,\n codeCtxColumn,\n ] = commentLineCols;\n const startLine = codeCtxLine + codeStartLine + line;\n\n // Seems to need one more now\n const startCol = 1 +\n codeCtxColumn + codeStartCol + (\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n msg.message = '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n (fatal ? 'Fatal: ' : '') +\n messageText;\n msg.line = startLine;\n msg.column = startCol;\n msg.endLine = endLine ? startLine + endLine : startLine;\n // added `- column` to offset what `endColumn` already seemed to include\n msg.endColumn = endColumn ? startCol - column + endColumn : startCol;\n }\n }\n\n const ret = [\n ...jsMessages,\n ].concat(...messages, ...extraMessages);\n extraMessages = [];\n return ret;\n },\n\n /**\n * @param {string} text\n * @param {string} filename\n * @returns {(string | Linter.ProcessorFile)[]}\n */\n preprocess (text, filename) {\n try {\n let ast;\n\n // May be running a second time so catch and ignore\n try {\n ast = parser ?\n // @ts-expect-error Should be present\n parser.parseForESLint(text, {\n comment: true,\n ecmaVersion: 'latest',\n sourceType,\n }).ast :\n espree.parse(text, {\n comment: true,\n ecmaVersion: 'latest',\n sourceType,\n });\n } catch {\n return [\n text,\n ];\n }\n\n /** @type {[number, number][]} */\n const commentLineCols = [];\n const jsdocComments = /** @type {import('estree').Comment[]} */ (\n /**\n * @type {import('estree').Program & {\n * comments?: import('estree').Comment[]\n * }}\n */\n (ast).comments\n ).filter((comment) => {\n return (/^\\*\\s/v).test(comment.value);\n }).map((comment) => {\n const [\n start,\n /* c8 ignore next -- Unsupporting processors only? */\n ] = comment.range ?? [];\n const textToStart = text.slice(0, start);\n\n const [\n lines,\n cols,\n ] = getLinesCols(textToStart);\n\n // const lines = [...textToStart.matchAll(/\\n/gv)].length\n // const lastLinePos = textToStart.lastIndexOf('\\n');\n // const cols = lastLinePos === -1\n // ? 0\n // : textToStart.slice(lastLinePos).length;\n commentLineCols.push([\n lines, cols,\n ]);\n return parseComment(comment);\n });\n\n return [\n text,\n ...jsdocComments.flatMap((jsdoc, idx) => {\n return getTextsAndFileNames(\n jsdoc,\n filename,\n commentLineCols[idx],\n );\n }).filter(\n /**\n * @returns {file is Linter.ProcessorFile}\n */\n (file) => {\n return file !== null && file !== undefined;\n },\n ),\n ];\n /* c8 ignore next 6 */\n } catch (error) {\n // eslint-disable-next-line no-console -- Debugging\n console.log('err', filename, error);\n }\n\n return [];\n },\n // Todo: Reenable\n supportsAutofix: false,\n },\n },\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getJsdocProcessorPlugin.cjs","names":["getRegexFromString","forEachPreferredTag","getTagDescription","getPreferredTagName","hasTag"],"sources":["../src/getJsdocProcessorPlugin.js"],"sourcesContent":["import {\n forEachPreferredTag,\n getPreferredTagName,\n getRegexFromString,\n getTagDescription,\n hasTag,\n} from './jsdocUtils.js';\nimport {\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport * as espree from 'espree';\nimport {\n readFileSync,\n} from 'node:fs';\nimport {\n join,\n} from 'node:path';\n\n/**\n * @import {\n * Integer,\n * JsdocBlockWithInline,\n * } from './iterateJsdoc.js';\n * @import {\n * ESLint,\n * Linter,\n * } from 'eslint';\n */\n\nconst {\n version,\n} = JSON.parse(\n // @ts-expect-error `Buffer` is ok for `JSON.parse`\n readFileSync(join(import.meta.dirname, '../package.json')),\n);\n\n// const zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/v;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst escapeStringRegexp = (str) => {\n return str.replaceAll(/[.*+?^$\\{\\}\\(\\)\\|\\[\\]\\\\]/gv, '\\\\$&');\n};\n\n/**\n * @param {string} str\n * @param {string} ch\n * @returns {Integer}\n */\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/**\n * @param {string} text\n * @returns {[\n * Integer,\n * Integer\n * ]}\n */\nconst getLinesCols = (text) => {\n const matchLines = countChars(text, '\\n');\n\n const colDelta = matchLines ?\n text.slice(text.lastIndexOf('\\n') + 1).length :\n text.length;\n\n return [\n matchLines, colDelta,\n ];\n};\n\n/**\n * @typedef {number} Integer\n */\n\n/**\n * @typedef {object} JsdocProcessorOptions\n * @property {boolean} [captionRequired] Require captions for example tags\n * @property {Integer} [paddedIndent] See docs\n * @property {boolean} [checkDefaults] See docs\n * @property {boolean} [checkParams] See docs\n * @property {boolean} [checkExamples] See docs\n * @property {boolean} [checkProperties] See docs\n * @property {string} [matchingFileName] See docs\n * @property {string} [matchingFileNameDefaults] See docs\n * @property {string} [matchingFileNameParams] See docs\n * @property {string} [matchingFileNameProperties] See docs\n * @property {string|RegExp} [exampleCodeRegex] See docs\n * @property {string|RegExp} [rejectExampleCodeRegex] See docs\n * @property {string[]} [allowedLanguagesToProcess] See docs\n * @property {\"script\"|\"module\"} [sourceType] See docs\n * @property {import('eslint').Linter.ESTreeParser|import('eslint').Linter.NonESTreeParser} [parser] See docs\n */\n\n/**\n * We use a function for the ability of the user to pass in a config, but\n * without requiring all users of the plugin to do so.\n * @param {JsdocProcessorOptions} [options]\n * @returns {ESLint.Plugin}\n */\nexport const getJsdocProcessorPlugin = (options = {}) => {\n const {\n allowedLanguagesToProcess = [\n 'js', 'ts', 'javascript', 'typescript',\n ],\n captionRequired = false,\n checkDefaults = false,\n checkExamples = true,\n checkParams = false,\n checkProperties = false,\n exampleCodeRegex = null,\n matchingFileName = null,\n matchingFileNameDefaults = null,\n matchingFileNameParams = null,\n matchingFileNameProperties = null,\n paddedIndent = 0,\n parser = undefined,\n rejectExampleCodeRegex = null,\n sourceType = 'module',\n } = options;\n\n /** @type {RegExp} */\n let exampleCodeRegExp;\n /** @type {RegExp} */\n let rejectExampleCodeRegExp;\n\n if (exampleCodeRegex) {\n exampleCodeRegExp = typeof exampleCodeRegex === 'string' ?\n getRegexFromString(exampleCodeRegex) :\n exampleCodeRegex;\n }\n\n if (rejectExampleCodeRegex) {\n rejectExampleCodeRegExp = typeof rejectExampleCodeRegex === 'string' ?\n getRegexFromString(rejectExampleCodeRegex) :\n rejectExampleCodeRegex;\n }\n\n /**\n * @type {{\n * targetTagName: string,\n * ext: string,\n * codeStartLine: number,\n * codeStartCol: number,\n * nonJSPrefacingCols: number,\n * commentLineCols: [number, number]\n * }[]}\n */\n const otherInfo = [];\n\n /** @type {import('eslint').Linter.LintMessage[]} */\n let extraMessages = [];\n\n /**\n * @param {JsdocBlockWithInline} jsdoc\n * @param {string} jsFileName\n * @param {[number, number]} commentLineCols\n */\n const getTextsAndFileNames = (jsdoc, jsFileName, commentLineCols) => {\n /**\n * @type {{\n * text: string,\n * filename: string|null|undefined\n * }[]}\n */\n const textsAndFileNames = [];\n\n /**\n * @param {{\n * filename: string|null,\n * defaultFileName: string|undefined,\n * source: string,\n * targetTagName: string,\n * rules?: import('eslint').Linter.RulesRecord|undefined,\n * lines?: Integer,\n * cols?: Integer,\n * skipInit?: boolean,\n * ext: string,\n * sources?: {\n * nonJSPrefacingCols: Integer,\n * nonJSPrefacingLines: Integer,\n * string: string,\n * }[],\n * tag?: import('comment-parser').Spec & {\n * line?: Integer,\n * }|{\n * line: Integer,\n * }\n * }} cfg\n */\n const checkSource = ({\n cols = 0,\n defaultFileName,\n ext,\n filename,\n lines = 0,\n skipInit,\n source,\n sources = [],\n tag = {\n line: 0,\n },\n targetTagName,\n }) => {\n if (!skipInit) {\n sources.push({\n nonJSPrefacingCols: cols,\n nonJSPrefacingLines: lines,\n string: source,\n });\n }\n\n /**\n * @param {{\n * nonJSPrefacingCols: Integer,\n * nonJSPrefacingLines: Integer,\n * string: string\n * }} cfg\n */\n const addSourceInfo = function ({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n }) {\n const src = paddedIndent ?\n string.replaceAll(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gv'), '\\n') :\n string;\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const file = filename || defaultFileName;\n\n if (!('line' in tag)) {\n tag.line = tag.source[0].number;\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = /**\n * @type {import('comment-parser').Spec & {\n * line: Integer,\n * }}\n */ (tag).line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n textsAndFileNames.push({\n filename: file,\n text: src,\n });\n otherInfo.push({\n codeStartCol,\n codeStartLine,\n commentLineCols,\n ext,\n nonJSPrefacingCols,\n targetTagName,\n });\n };\n\n for (const targetSource of sources) {\n addSourceInfo(targetSource);\n }\n };\n\n /**\n *\n * @param {string|null} filename\n * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n * ESLint 7, this is the default which other JS-fenced rules will used.\n * Formerly \"md\" was the default.\n * @returns {{\n * defaultFileName: string|undefined,\n * filename: string|null,\n * ext: string\n * }}\n */\n const getFilenameInfo = (filename, ext = 'md/*.js') => {\n let defaultFileName;\n if (!filename) {\n if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n defaultFileName = jsFileName.replace(/\\.[^.]*$/v, `.${ext}`);\n } else {\n defaultFileName = `dummy.${ext}`;\n }\n }\n\n return {\n defaultFileName,\n ext,\n filename,\n };\n };\n\n if (checkDefaults) {\n const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n forEachPreferredTag(jsdoc, 'default', (tag, targetTagName) => {\n if (!tag.description.trim()) {\n return;\n }\n\n checkSource({\n source: `(${getTagDescription(tag)})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkParams) {\n const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n forEachPreferredTag(jsdoc, 'param', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (checkProperties) {\n const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n forEachPreferredTag(jsdoc, 'property', (tag, targetTagName) => {\n if (!tag.default || !tag.default.trim()) {\n return;\n }\n\n checkSource({\n source: `(${tag.default})`,\n targetTagName,\n ...filenameInfo,\n });\n });\n }\n\n if (!checkExamples) {\n return textsAndFileNames;\n }\n\n const tagName = /** @type {string} */ (getPreferredTagName(jsdoc, {\n tagName: 'example',\n }));\n if (!hasTag(jsdoc, tagName)) {\n return textsAndFileNames;\n }\n\n const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n forEachPreferredTag(jsdoc, 'example', (tag, targetTagName) => {\n let source = /** @type {string} */ (getTagDescription(tag));\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n extraMessages.push({\n column: commentLineCols[1] + 1,\n line: 1 + commentLineCols[0] + (tag.line ?? tag.source[0].number),\n message: `@${targetTagName} error - Caption is expected for examples.`,\n ruleId: 'jsdoc/example-missing-caption',\n severity: 2,\n });\n return;\n }\n\n source = source.replace(hasCaptionRegex, '');\n const [\n lines,\n cols,\n ] = match ? getLinesCols(match[0]) : [\n 0, 0,\n ];\n\n if (exampleCodeRegex && !exampleCodeRegExp.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegExp.test(source)\n ) {\n return;\n }\n\n // If `allowedLanguagesToProcess` is falsy, all languages should be processed.\n if (allowedLanguagesToProcess) {\n const matches = (/^\\s*```(?<language>\\S+)([\\s\\S]*)```\\s*$/v).exec(source);\n if (matches?.groups && !allowedLanguagesToProcess.includes(\n matches.groups.language.toLowerCase(),\n )) {\n return;\n }\n }\n\n const sources = [];\n let skipInit = false;\n if (exampleCodeRegex) {\n let nonJSPrefacingCols = 0;\n let nonJSPrefacingLines = 0;\n\n let startingIndex = 0;\n let lastStringCount = 0;\n\n let exampleCode;\n exampleCodeRegExp.lastIndex = 0;\n while ((exampleCode = exampleCodeRegExp.exec(source)) !== null) {\n const {\n '0': n0,\n '1': n1,\n index,\n } = exampleCode;\n\n // Count anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(startingIndex, index);\n\n const [\n preMatchLines,\n colDelta,\n ] = getLinesCols(preMatch);\n\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const idx = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, idx);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n const string = n1 || n0;\n sources.push({\n nonJSPrefacingCols,\n nonJSPrefacingLines,\n string,\n });\n startingIndex = exampleCodeRegExp.lastIndex;\n lastStringCount = countChars(string, '\\n');\n if (!exampleCodeRegExp.global) {\n break;\n }\n }\n\n skipInit = true;\n }\n\n checkSource({\n cols,\n lines,\n skipInit,\n source,\n sources,\n tag,\n targetTagName,\n ...matchingFilenameInfo,\n });\n });\n\n return textsAndFileNames;\n };\n\n // See https://eslint.org/docs/latest/extend/plugins#processors-in-plugins\n // See https://eslint.org/docs/latest/extend/custom-processors\n // From https://github.com/eslint/eslint/issues/14745#issuecomment-869457265\n /*\n {\n \"files\": [\"*.js\", \"*.ts\"],\n \"processor\": \"jsdoc/example\" // a pretended value here\n },\n {\n \"files\": [\n \"*.js/*_jsdoc-example.js\",\n \"*.ts/*_jsdoc-example.js\",\n \"*.js/*_jsdoc-example.ts\"\n ],\n \"rules\": {\n // specific rules for examples in jsdoc only here\n // And other rules for `.js` and `.ts` will also be enabled for them\n }\n }\n */\n return {\n meta: {\n name: 'eslint-plugin-jsdoc/processor',\n version,\n },\n processors: {\n examples: {\n meta: {\n name: 'eslint-plugin-jsdoc/preprocessor',\n version,\n },\n /**\n * @param {import('eslint').Linter.LintMessage[][]} messages\n * @param {string} filename\n */\n postprocess ([\n jsMessages,\n ...messages\n // eslint-disable-next-line no-unused-vars -- Placeholder\n ], filename) {\n for (const [\n idx,\n message,\n ] of messages.entries()) {\n const {\n codeStartCol,\n codeStartLine,\n commentLineCols,\n nonJSPrefacingCols,\n targetTagName,\n } = otherInfo[idx];\n\n for (const msg of message) {\n const {\n column,\n endColumn,\n endLine,\n fatal,\n line,\n message: messageText,\n ruleId,\n severity,\n\n // Todo: Make fixable\n // fix\n // fix: {range: [number, number], text: string}\n // suggestions: {desc: , messageId:, fix: }[],\n } = msg;\n\n const [\n codeCtxLine,\n codeCtxColumn,\n ] = commentLineCols;\n const startLine = codeCtxLine + codeStartLine + line;\n\n // Seems to need one more now\n const startCol = 1 +\n codeCtxColumn + codeStartCol + (\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n msg.message = '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n (fatal ? 'Fatal: ' : '') +\n messageText;\n msg.line = startLine;\n msg.column = startCol;\n msg.endLine = endLine ? startLine + endLine : startLine;\n // added `- column` to offset what `endColumn` already seemed to include\n msg.endColumn = endColumn ? startCol - column + endColumn : startCol;\n }\n }\n\n const ret = [\n ...jsMessages,\n ].concat(...messages, ...extraMessages);\n extraMessages = [];\n return ret;\n },\n\n /**\n * @param {string} text\n * @param {string} filename\n * @returns {(string | Linter.ProcessorFile)[]}\n */\n preprocess (text, filename) {\n try {\n let ast;\n\n // May be running a second time so catch and ignore\n try {\n ast = parser ?\n // @ts-expect-error Should be present\n parser.parseForESLint(text, {\n comment: true,\n ecmaVersion: 'latest',\n sourceType,\n }).ast :\n espree.parse(text, {\n comment: true,\n ecmaVersion: 'latest',\n sourceType,\n });\n } catch {\n return [\n text,\n ];\n }\n\n /** @type {[number, number][]} */\n const commentLineCols = [];\n const jsdocComments = /** @type {import('estree').Comment[]} */ (\n /**\n * @type {import('estree').Program & {\n * comments?: import('estree').Comment[]\n * }}\n */\n (ast).comments\n ).filter((comment) => {\n return (/^\\*\\s/v).test(comment.value);\n }).map((comment) => {\n const [\n start,\n /* c8 ignore next -- Unsupporting processors only? */\n ] = comment.range ?? [];\n const textToStart = text.slice(0, start);\n\n const [\n lines,\n cols,\n ] = getLinesCols(textToStart);\n\n // const lines = [...textToStart.matchAll(/\\n/gv)].length\n // const lastLinePos = textToStart.lastIndexOf('\\n');\n // const cols = lastLinePos === -1\n // ? 0\n // : textToStart.slice(lastLinePos).length;\n commentLineCols.push([\n lines, cols,\n ]);\n return parseComment(comment);\n });\n\n return [\n text,\n ...jsdocComments.flatMap((jsdoc, idx) => {\n return getTextsAndFileNames(\n jsdoc,\n filename,\n commentLineCols[idx],\n );\n }).filter(\n /**\n * @returns {file is Linter.ProcessorFile}\n */\n (file) => {\n return file !== null && file !== undefined;\n },\n ),\n ];\n /* c8 ignore next 6 */\n } catch (error) {\n // eslint-disable-next-line no-console -- Debugging\n console.log('err', filename, error);\n }\n\n return [];\n },\n // Todo: Reenable\n supportsAutofix: false,\n },\n },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { ESLint, Linter } from "eslint";
2
+
3
+ //#region src/getJsdocProcessorPlugin.d.ts
4
+ declare function getJsdocProcessorPlugin(options?: JsdocProcessorOptions): ESLint.Plugin;
5
+ type Integer = number;
6
+ type JsdocProcessorOptions = {
7
+ /**
8
+ * Require captions for example tags
9
+ */
10
+ captionRequired?: boolean | undefined;
11
+ /**
12
+ * See docs
13
+ */
14
+ paddedIndent?: number | undefined;
15
+ /**
16
+ * See docs
17
+ */
18
+ checkDefaults?: boolean | undefined;
19
+ /**
20
+ * See docs
21
+ */
22
+ checkParams?: boolean | undefined;
23
+ /**
24
+ * See docs
25
+ */
26
+ checkExamples?: boolean | undefined;
27
+ /**
28
+ * See docs
29
+ */
30
+ checkProperties?: boolean | undefined;
31
+ /**
32
+ * See docs
33
+ */
34
+ matchingFileName?: string | undefined;
35
+ /**
36
+ * See docs
37
+ */
38
+ matchingFileNameDefaults?: string | undefined;
39
+ /**
40
+ * See docs
41
+ */
42
+ matchingFileNameParams?: string | undefined;
43
+ /**
44
+ * See docs
45
+ */
46
+ matchingFileNameProperties?: string | undefined;
47
+ /**
48
+ * See docs
49
+ */
50
+ exampleCodeRegex?: string | RegExp | undefined;
51
+ /**
52
+ * See docs
53
+ */
54
+ rejectExampleCodeRegex?: string | RegExp | undefined;
55
+ /**
56
+ * See docs
57
+ */
58
+ allowedLanguagesToProcess?: string[] | undefined;
59
+ /**
60
+ * See docs
61
+ */
62
+ sourceType?: "script" | "module" | undefined;
63
+ /**
64
+ * See docs
65
+ */
66
+ parser?: Linter.ESTreeParser | Linter.NonESTreeParser | undefined;
67
+ };
68
+ //#endregion
69
+ export { Integer, JsdocProcessorOptions, getJsdocProcessorPlugin };
70
+ //# sourceMappingURL=getJsdocProcessorPlugin.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getJsdocProcessorPlugin.d.cts","names":[],"sources":["../src/getJsdocProcessorPlugin.js"],"sourcesContent":[],"mappings":";;;iBA8GO,uBAAA,WAHI,wBACE,MAAA,CAAA;;;EAEN;;;EAHyB,eACnB,CAAA,EAAA,OAAA,GAAA,SAAA;EAAa"}
@@ -1,67 +1,70 @@
1
- export function getJsdocProcessorPlugin(options?: JsdocProcessorOptions): ESLint.Plugin;
2
- export type Integer = number;
3
- export type JsdocProcessorOptions = {
4
- /**
5
- * Require captions for example tags
6
- */
7
- captionRequired?: boolean | undefined;
8
- /**
9
- * See docs
10
- */
11
- paddedIndent?: number | undefined;
12
- /**
13
- * See docs
14
- */
15
- checkDefaults?: boolean | undefined;
16
- /**
17
- * See docs
18
- */
19
- checkParams?: boolean | undefined;
20
- /**
21
- * See docs
22
- */
23
- checkExamples?: boolean | undefined;
24
- /**
25
- * See docs
26
- */
27
- checkProperties?: boolean | undefined;
28
- /**
29
- * See docs
30
- */
31
- matchingFileName?: string | undefined;
32
- /**
33
- * See docs
34
- */
35
- matchingFileNameDefaults?: string | undefined;
36
- /**
37
- * See docs
38
- */
39
- matchingFileNameParams?: string | undefined;
40
- /**
41
- * See docs
42
- */
43
- matchingFileNameProperties?: string | undefined;
44
- /**
45
- * See docs
46
- */
47
- exampleCodeRegex?: string | RegExp | undefined;
48
- /**
49
- * See docs
50
- */
51
- rejectExampleCodeRegex?: string | RegExp | undefined;
52
- /**
53
- * See docs
54
- */
55
- allowedLanguagesToProcess?: string[] | undefined;
56
- /**
57
- * See docs
58
- */
59
- sourceType?: "module" | "script" | undefined;
60
- /**
61
- * See docs
62
- */
63
- parser?: Linter.ESTreeParser | Linter.NonESTreeParser | undefined;
1
+ import { ESLint, Linter } from "eslint";
2
+
3
+ //#region src/getJsdocProcessorPlugin.d.ts
4
+ declare function getJsdocProcessorPlugin(options?: JsdocProcessorOptions): ESLint.Plugin;
5
+ type Integer = number;
6
+ type JsdocProcessorOptions = {
7
+ /**
8
+ * Require captions for example tags
9
+ */
10
+ captionRequired?: boolean | undefined;
11
+ /**
12
+ * See docs
13
+ */
14
+ paddedIndent?: number | undefined;
15
+ /**
16
+ * See docs
17
+ */
18
+ checkDefaults?: boolean | undefined;
19
+ /**
20
+ * See docs
21
+ */
22
+ checkParams?: boolean | undefined;
23
+ /**
24
+ * See docs
25
+ */
26
+ checkExamples?: boolean | undefined;
27
+ /**
28
+ * See docs
29
+ */
30
+ checkProperties?: boolean | undefined;
31
+ /**
32
+ * See docs
33
+ */
34
+ matchingFileName?: string | undefined;
35
+ /**
36
+ * See docs
37
+ */
38
+ matchingFileNameDefaults?: string | undefined;
39
+ /**
40
+ * See docs
41
+ */
42
+ matchingFileNameParams?: string | undefined;
43
+ /**
44
+ * See docs
45
+ */
46
+ matchingFileNameProperties?: string | undefined;
47
+ /**
48
+ * See docs
49
+ */
50
+ exampleCodeRegex?: string | RegExp | undefined;
51
+ /**
52
+ * See docs
53
+ */
54
+ rejectExampleCodeRegex?: string | RegExp | undefined;
55
+ /**
56
+ * See docs
57
+ */
58
+ allowedLanguagesToProcess?: string[] | undefined;
59
+ /**
60
+ * See docs
61
+ */
62
+ sourceType?: "script" | "module" | undefined;
63
+ /**
64
+ * See docs
65
+ */
66
+ parser?: Linter.ESTreeParser | Linter.NonESTreeParser | undefined;
64
67
  };
65
- import type { ESLint } from 'eslint';
66
- import type { Linter } from 'eslint';
68
+ //#endregion
69
+ export { Integer, JsdocProcessorOptions, getJsdocProcessorPlugin };
67
70
  //# sourceMappingURL=getJsdocProcessorPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getJsdocProcessorPlugin.d.ts","sourceRoot":"","sources":["../src/getJsdocProcessorPlugin.js"],"names":[],"mappings":"AA8GO,kDAHI,qBAAqB,GACnB,aAAa,CAmjBzB;sBA7kBY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAxDT,QAAQ;4BAAR,QAAQ"}
1
+ {"version":3,"file":"getJsdocProcessorPlugin.d.ts","names":[],"sources":["../src/getJsdocProcessorPlugin.js"],"sourcesContent":[],"mappings":";;;iBA8GO,uBAAA,WAHI,wBACE,MAAA,CAAA;;;EAEN;;;EAHyB,eACnB,CAAA,EAAA,OAAA,GAAA,SAAA;EAAa"}