eslint-plugin-tsdoc-require-2 1.0.6 → 1.0.8

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 (346) hide show
  1. package/README.md +111 -36
  2. package/dist/internal/require-tag-factory.cjs +58 -9
  3. package/dist/internal/require-tag-factory.d.ts +5 -2
  4. package/dist/internal/require-tag-factory.d.ts.map +1 -1
  5. package/dist/internal/require-tag-factory.js +58 -9
  6. package/dist/internal/require-tag-factory.js.map +1 -1
  7. package/dist/plugin.cjs +146 -17
  8. package/dist/plugin.d.ts +2 -0
  9. package/dist/plugin.d.ts.map +1 -1
  10. package/dist/plugin.js +142 -16
  11. package/dist/plugin.js.map +1 -1
  12. package/dist/rules/require-tag-rules.cjs +121 -25
  13. package/dist/rules/require-tag-rules.d.ts +5 -30
  14. package/dist/rules/require-tag-rules.d.ts.map +1 -1
  15. package/dist/rules/require-tag-rules.js +93 -0
  16. package/dist/rules/require-tag-rules.js.map +1 -1
  17. package/dist/rules/require.cjs +59 -16
  18. package/dist/rules/require.d.ts +3 -1
  19. package/dist/rules/require.d.ts.map +1 -1
  20. package/dist/rules/require.js +59 -16
  21. package/dist/rules/require.js.map +1 -1
  22. package/dist/rules/required-tags/require-abstract.cjs +32 -0
  23. package/dist/rules/required-tags/require-abstract.d.ts +5 -0
  24. package/dist/rules/required-tags/require-abstract.d.ts.map +1 -0
  25. package/dist/rules/required-tags/require-abstract.js +30 -0
  26. package/dist/rules/required-tags/require-abstract.js.map +1 -0
  27. package/dist/rules/required-tags/require-alpha.cjs +0 -1
  28. package/dist/rules/required-tags/require-alpha.d.ts.map +1 -1
  29. package/dist/rules/required-tags/require-alpha.js +1 -2
  30. package/dist/rules/required-tags/require-alpha.js.map +1 -1
  31. package/dist/rules/required-tags/require-author.cjs +32 -0
  32. package/dist/rules/required-tags/require-author.d.ts +5 -0
  33. package/dist/rules/required-tags/require-author.d.ts.map +1 -0
  34. package/dist/rules/required-tags/require-author.js +30 -0
  35. package/dist/rules/required-tags/require-author.js.map +1 -0
  36. package/dist/rules/required-tags/require-beta.cjs +0 -1
  37. package/dist/rules/required-tags/require-beta.d.ts.map +1 -1
  38. package/dist/rules/required-tags/require-beta.js +1 -2
  39. package/dist/rules/required-tags/require-beta.js.map +1 -1
  40. package/dist/rules/required-tags/require-category.cjs +32 -0
  41. package/dist/rules/required-tags/require-category.d.ts +5 -0
  42. package/dist/rules/required-tags/require-category.d.ts.map +1 -0
  43. package/dist/rules/required-tags/require-category.js +30 -0
  44. package/dist/rules/required-tags/require-category.js.map +1 -0
  45. package/dist/rules/required-tags/require-class.cjs +32 -0
  46. package/dist/rules/required-tags/require-class.d.ts +5 -0
  47. package/dist/rules/required-tags/require-class.d.ts.map +1 -0
  48. package/dist/rules/required-tags/require-class.js +30 -0
  49. package/dist/rules/required-tags/require-class.js.map +1 -0
  50. package/dist/rules/required-tags/require-decorator.cjs +0 -1
  51. package/dist/rules/required-tags/require-decorator.d.ts.map +1 -1
  52. package/dist/rules/required-tags/require-decorator.js +1 -2
  53. package/dist/rules/required-tags/require-decorator.js.map +1 -1
  54. package/dist/rules/required-tags/require-default-value.cjs +0 -1
  55. package/dist/rules/required-tags/require-default-value.d.ts.map +1 -1
  56. package/dist/rules/required-tags/require-default-value.js +1 -2
  57. package/dist/rules/required-tags/require-default-value.js.map +1 -1
  58. package/dist/rules/required-tags/require-deprecated.cjs +0 -1
  59. package/dist/rules/required-tags/require-deprecated.d.ts.map +1 -1
  60. package/dist/rules/required-tags/require-deprecated.js +1 -2
  61. package/dist/rules/required-tags/require-deprecated.js.map +1 -1
  62. package/dist/rules/required-tags/require-document.cjs +32 -0
  63. package/dist/rules/required-tags/require-document.d.ts +5 -0
  64. package/dist/rules/required-tags/require-document.d.ts.map +1 -0
  65. package/dist/rules/required-tags/require-document.js +30 -0
  66. package/dist/rules/required-tags/require-document.js.map +1 -0
  67. package/dist/rules/required-tags/require-enum.cjs +32 -0
  68. package/dist/rules/required-tags/require-enum.d.ts +5 -0
  69. package/dist/rules/required-tags/require-enum.d.ts.map +1 -0
  70. package/dist/rules/required-tags/require-enum.js +30 -0
  71. package/dist/rules/required-tags/require-enum.js.map +1 -0
  72. package/dist/rules/required-tags/require-event-property.cjs +0 -1
  73. package/dist/rules/required-tags/require-event-property.d.ts.map +1 -1
  74. package/dist/rules/required-tags/require-event-property.js +1 -2
  75. package/dist/rules/required-tags/require-event-property.js.map +1 -1
  76. package/dist/rules/required-tags/require-event.cjs +32 -0
  77. package/dist/rules/required-tags/require-event.d.ts +5 -0
  78. package/dist/rules/required-tags/require-event.d.ts.map +1 -0
  79. package/dist/rules/required-tags/require-event.js +30 -0
  80. package/dist/rules/required-tags/require-event.js.map +1 -0
  81. package/dist/rules/required-tags/require-example.cjs +0 -1
  82. package/dist/rules/required-tags/require-example.d.ts.map +1 -1
  83. package/dist/rules/required-tags/require-example.js +1 -2
  84. package/dist/rules/required-tags/require-example.js.map +1 -1
  85. package/dist/rules/required-tags/require-expand.cjs +32 -0
  86. package/dist/rules/required-tags/require-expand.d.ts +5 -0
  87. package/dist/rules/required-tags/require-expand.d.ts.map +1 -0
  88. package/dist/rules/required-tags/require-expand.js +30 -0
  89. package/dist/rules/required-tags/require-expand.js.map +1 -0
  90. package/dist/rules/required-tags/require-experimental.cjs +0 -1
  91. package/dist/rules/required-tags/require-experimental.d.ts.map +1 -1
  92. package/dist/rules/required-tags/require-experimental.js +1 -2
  93. package/dist/rules/required-tags/require-experimental.js.map +1 -1
  94. package/dist/rules/required-tags/require-function.cjs +32 -0
  95. package/dist/rules/required-tags/require-function.d.ts +5 -0
  96. package/dist/rules/required-tags/require-function.d.ts.map +1 -0
  97. package/dist/rules/required-tags/require-function.js +30 -0
  98. package/dist/rules/required-tags/require-function.js.map +1 -0
  99. package/dist/rules/required-tags/require-group.cjs +32 -0
  100. package/dist/rules/required-tags/require-group.d.ts +5 -0
  101. package/dist/rules/required-tags/require-group.d.ts.map +1 -0
  102. package/dist/rules/required-tags/require-group.js +30 -0
  103. package/dist/rules/required-tags/require-group.js.map +1 -0
  104. package/dist/rules/required-tags/require-hidden.cjs +32 -0
  105. package/dist/rules/required-tags/require-hidden.d.ts +5 -0
  106. package/dist/rules/required-tags/require-hidden.d.ts.map +1 -0
  107. package/dist/rules/required-tags/require-hidden.js +30 -0
  108. package/dist/rules/required-tags/require-hidden.js.map +1 -0
  109. package/dist/rules/required-tags/require-hideconstructor.cjs +32 -0
  110. package/dist/rules/required-tags/require-hideconstructor.d.ts +5 -0
  111. package/dist/rules/required-tags/require-hideconstructor.d.ts.map +1 -0
  112. package/dist/rules/required-tags/require-hideconstructor.js +30 -0
  113. package/dist/rules/required-tags/require-hideconstructor.js.map +1 -0
  114. package/dist/rules/required-tags/require-ignore.cjs +32 -0
  115. package/dist/rules/required-tags/require-ignore.d.ts +5 -0
  116. package/dist/rules/required-tags/require-ignore.d.ts.map +1 -0
  117. package/dist/rules/required-tags/require-ignore.js +30 -0
  118. package/dist/rules/required-tags/require-ignore.js.map +1 -0
  119. package/dist/rules/required-tags/require-import.cjs +32 -0
  120. package/dist/rules/required-tags/require-import.d.ts +5 -0
  121. package/dist/rules/required-tags/require-import.d.ts.map +1 -0
  122. package/dist/rules/required-tags/require-import.js +30 -0
  123. package/dist/rules/required-tags/require-import.js.map +1 -0
  124. package/dist/rules/required-tags/require-include.cjs +32 -0
  125. package/dist/rules/required-tags/require-include.d.ts +5 -0
  126. package/dist/rules/required-tags/require-include.d.ts.map +1 -0
  127. package/dist/rules/required-tags/require-include.js +30 -0
  128. package/dist/rules/required-tags/require-include.js.map +1 -0
  129. package/dist/rules/required-tags/require-inherit-doc.cjs +0 -1
  130. package/dist/rules/required-tags/require-inherit-doc.d.ts.map +1 -1
  131. package/dist/rules/required-tags/require-inherit-doc.js +1 -2
  132. package/dist/rules/required-tags/require-inherit-doc.js.map +1 -1
  133. package/dist/rules/required-tags/require-inline.cjs +32 -0
  134. package/dist/rules/required-tags/require-inline.d.ts +5 -0
  135. package/dist/rules/required-tags/require-inline.d.ts.map +1 -0
  136. package/dist/rules/required-tags/require-inline.js +30 -0
  137. package/dist/rules/required-tags/require-inline.js.map +1 -0
  138. package/dist/rules/required-tags/require-interface.cjs +32 -0
  139. package/dist/rules/required-tags/require-interface.d.ts +5 -0
  140. package/dist/rules/required-tags/require-interface.d.ts.map +1 -0
  141. package/dist/rules/required-tags/require-interface.js +30 -0
  142. package/dist/rules/required-tags/require-interface.js.map +1 -0
  143. package/dist/rules/required-tags/require-internal.cjs +0 -1
  144. package/dist/rules/required-tags/require-internal.d.ts.map +1 -1
  145. package/dist/rules/required-tags/require-internal.js +1 -2
  146. package/dist/rules/required-tags/require-internal.js.map +1 -1
  147. package/dist/rules/required-tags/require-label.cjs +0 -1
  148. package/dist/rules/required-tags/require-label.d.ts.map +1 -1
  149. package/dist/rules/required-tags/require-label.js +1 -2
  150. package/dist/rules/required-tags/require-label.js.map +1 -1
  151. package/dist/rules/required-tags/require-license.cjs +32 -0
  152. package/dist/rules/required-tags/require-license.d.ts +5 -0
  153. package/dist/rules/required-tags/require-license.d.ts.map +1 -0
  154. package/dist/rules/required-tags/require-license.js +30 -0
  155. package/dist/rules/required-tags/require-license.js.map +1 -0
  156. package/dist/rules/required-tags/require-link.cjs +0 -1
  157. package/dist/rules/required-tags/require-link.d.ts.map +1 -1
  158. package/dist/rules/required-tags/require-link.js +1 -2
  159. package/dist/rules/required-tags/require-link.js.map +1 -1
  160. package/dist/rules/required-tags/require-merge-module-with.cjs +32 -0
  161. package/dist/rules/required-tags/require-merge-module-with.d.ts +5 -0
  162. package/dist/rules/required-tags/require-merge-module-with.d.ts.map +1 -0
  163. package/dist/rules/required-tags/require-merge-module-with.js +30 -0
  164. package/dist/rules/required-tags/require-merge-module-with.js.map +1 -0
  165. package/dist/rules/required-tags/require-module.cjs +32 -0
  166. package/dist/rules/required-tags/require-module.d.ts +5 -0
  167. package/dist/rules/required-tags/require-module.d.ts.map +1 -0
  168. package/dist/rules/required-tags/require-module.js +30 -0
  169. package/dist/rules/required-tags/require-module.js.map +1 -0
  170. package/dist/rules/required-tags/require-namespace.cjs +32 -0
  171. package/dist/rules/required-tags/require-namespace.d.ts +5 -0
  172. package/dist/rules/required-tags/require-namespace.d.ts.map +1 -0
  173. package/dist/rules/required-tags/require-namespace.js +30 -0
  174. package/dist/rules/required-tags/require-namespace.js.map +1 -0
  175. package/dist/rules/required-tags/require-overload.cjs +32 -0
  176. package/dist/rules/required-tags/require-overload.d.ts +5 -0
  177. package/dist/rules/required-tags/require-overload.d.ts.map +1 -0
  178. package/dist/rules/required-tags/require-overload.js +30 -0
  179. package/dist/rules/required-tags/require-overload.js.map +1 -0
  180. package/dist/rules/required-tags/require-override.cjs +0 -1
  181. package/dist/rules/required-tags/require-override.d.ts.map +1 -1
  182. package/dist/rules/required-tags/require-override.js +1 -2
  183. package/dist/rules/required-tags/require-override.js.map +1 -1
  184. package/dist/rules/required-tags/require-package-documentation.cjs +0 -1
  185. package/dist/rules/required-tags/require-package-documentation.d.ts.map +1 -1
  186. package/dist/rules/required-tags/require-package-documentation.js +1 -2
  187. package/dist/rules/required-tags/require-package-documentation.js.map +1 -1
  188. package/dist/rules/required-tags/require-param.cjs +0 -1
  189. package/dist/rules/required-tags/require-param.d.ts.map +1 -1
  190. package/dist/rules/required-tags/require-param.js +1 -2
  191. package/dist/rules/required-tags/require-param.js.map +1 -1
  192. package/dist/rules/required-tags/require-primary-export.cjs +32 -0
  193. package/dist/rules/required-tags/require-primary-export.d.ts +5 -0
  194. package/dist/rules/required-tags/require-primary-export.d.ts.map +1 -0
  195. package/dist/rules/required-tags/require-primary-export.js +30 -0
  196. package/dist/rules/required-tags/require-primary-export.js.map +1 -0
  197. package/dist/rules/required-tags/require-private-remarks.cjs +0 -1
  198. package/dist/rules/required-tags/require-private-remarks.d.ts.map +1 -1
  199. package/dist/rules/required-tags/require-private-remarks.js +1 -2
  200. package/dist/rules/required-tags/require-private-remarks.js.map +1 -1
  201. package/dist/rules/required-tags/require-private.cjs +32 -0
  202. package/dist/rules/required-tags/require-private.d.ts +5 -0
  203. package/dist/rules/required-tags/require-private.d.ts.map +1 -0
  204. package/dist/rules/required-tags/require-private.js +30 -0
  205. package/dist/rules/required-tags/require-private.js.map +1 -0
  206. package/dist/rules/required-tags/require-property.cjs +32 -0
  207. package/dist/rules/required-tags/require-property.d.ts +5 -0
  208. package/dist/rules/required-tags/require-property.d.ts.map +1 -0
  209. package/dist/rules/required-tags/require-property.js +30 -0
  210. package/dist/rules/required-tags/require-property.js.map +1 -0
  211. package/dist/rules/required-tags/require-protected.cjs +32 -0
  212. package/dist/rules/required-tags/require-protected.d.ts +5 -0
  213. package/dist/rules/required-tags/require-protected.d.ts.map +1 -0
  214. package/dist/rules/required-tags/require-protected.js +30 -0
  215. package/dist/rules/required-tags/require-protected.js.map +1 -0
  216. package/dist/rules/required-tags/require-public.cjs +0 -1
  217. package/dist/rules/required-tags/require-public.d.ts.map +1 -1
  218. package/dist/rules/required-tags/require-public.js +1 -2
  219. package/dist/rules/required-tags/require-public.js.map +1 -1
  220. package/dist/rules/required-tags/require-readonly.cjs +0 -1
  221. package/dist/rules/required-tags/require-readonly.d.ts.map +1 -1
  222. package/dist/rules/required-tags/require-readonly.js +1 -2
  223. package/dist/rules/required-tags/require-readonly.js.map +1 -1
  224. package/dist/rules/required-tags/require-remarks.cjs +0 -1
  225. package/dist/rules/required-tags/require-remarks.d.ts.map +1 -1
  226. package/dist/rules/required-tags/require-remarks.js +1 -2
  227. package/dist/rules/required-tags/require-remarks.js.map +1 -1
  228. package/dist/rules/required-tags/require-returns.cjs +0 -1
  229. package/dist/rules/required-tags/require-returns.d.ts.map +1 -1
  230. package/dist/rules/required-tags/require-returns.js +1 -2
  231. package/dist/rules/required-tags/require-returns.js.map +1 -1
  232. package/dist/rules/required-tags/require-sealed.cjs +0 -1
  233. package/dist/rules/required-tags/require-sealed.d.ts.map +1 -1
  234. package/dist/rules/required-tags/require-sealed.js +1 -2
  235. package/dist/rules/required-tags/require-sealed.js.map +1 -1
  236. package/dist/rules/required-tags/require-see.cjs +0 -1
  237. package/dist/rules/required-tags/require-see.d.ts.map +1 -1
  238. package/dist/rules/required-tags/require-see.js +1 -2
  239. package/dist/rules/required-tags/require-see.js.map +1 -1
  240. package/dist/rules/required-tags/require-since.cjs +32 -0
  241. package/dist/rules/required-tags/require-since.d.ts +5 -0
  242. package/dist/rules/required-tags/require-since.d.ts.map +1 -0
  243. package/dist/rules/required-tags/require-since.js +30 -0
  244. package/dist/rules/required-tags/require-since.js.map +1 -0
  245. package/dist/rules/required-tags/require-sort-strategy.cjs +32 -0
  246. package/dist/rules/required-tags/require-sort-strategy.d.ts +5 -0
  247. package/dist/rules/required-tags/require-sort-strategy.d.ts.map +1 -0
  248. package/dist/rules/required-tags/require-sort-strategy.js +30 -0
  249. package/dist/rules/required-tags/require-sort-strategy.js.map +1 -0
  250. package/dist/rules/required-tags/require-summary.cjs +32 -0
  251. package/dist/rules/required-tags/require-summary.d.ts +5 -0
  252. package/dist/rules/required-tags/require-summary.d.ts.map +1 -0
  253. package/dist/rules/required-tags/require-summary.js +30 -0
  254. package/dist/rules/required-tags/require-summary.js.map +1 -0
  255. package/dist/rules/required-tags/require-template.cjs +32 -0
  256. package/dist/rules/required-tags/require-template.d.ts +5 -0
  257. package/dist/rules/required-tags/require-template.d.ts.map +1 -0
  258. package/dist/rules/required-tags/require-template.js +30 -0
  259. package/dist/rules/required-tags/require-template.js.map +1 -0
  260. package/dist/rules/required-tags/require-throws.cjs +0 -1
  261. package/dist/rules/required-tags/require-throws.d.ts.map +1 -1
  262. package/dist/rules/required-tags/require-throws.js +1 -2
  263. package/dist/rules/required-tags/require-throws.js.map +1 -1
  264. package/dist/rules/required-tags/require-type-param.cjs +0 -1
  265. package/dist/rules/required-tags/require-type-param.d.ts.map +1 -1
  266. package/dist/rules/required-tags/require-type-param.js +1 -2
  267. package/dist/rules/required-tags/require-type-param.js.map +1 -1
  268. package/dist/rules/required-tags/require-use-declared-type.cjs +32 -0
  269. package/dist/rules/required-tags/require-use-declared-type.d.ts +5 -0
  270. package/dist/rules/required-tags/require-use-declared-type.d.ts.map +1 -0
  271. package/dist/rules/required-tags/require-use-declared-type.js +30 -0
  272. package/dist/rules/required-tags/require-use-declared-type.js.map +1 -0
  273. package/dist/rules/required-tags/require-virtual.cjs +0 -1
  274. package/dist/rules/required-tags/require-virtual.d.ts.map +1 -1
  275. package/dist/rules/required-tags/require-virtual.js +1 -2
  276. package/dist/rules/required-tags/require-virtual.js.map +1 -1
  277. package/dist/rules/restrict-tags.cjs +416 -0
  278. package/dist/rules/restrict-tags.d.ts +17 -0
  279. package/dist/rules/restrict-tags.d.ts.map +1 -0
  280. package/dist/rules/restrict-tags.js +414 -0
  281. package/dist/rules/restrict-tags.js.map +1 -0
  282. package/docs/rules/getting-started.md +97 -0
  283. package/docs/rules/index.md +61 -0
  284. package/docs/rules/presets/all.md +100 -0
  285. package/docs/rules/presets/detailed.md +41 -0
  286. package/docs/rules/presets/index.md +156 -0
  287. package/docs/rules/presets/jsdoc.md +43 -0
  288. package/docs/rules/presets/packages.md +41 -0
  289. package/docs/rules/presets/recommended.md +37 -0
  290. package/docs/rules/presets/tsdoc.md +45 -0
  291. package/docs/rules/presets/typedoc-strict.md +50 -0
  292. package/docs/rules/presets/typedoc.md +44 -0
  293. package/docs/rules/require.md +92 -56
  294. package/docs/rules/required-tags/require-abstract.md +87 -0
  295. package/docs/rules/required-tags/require-alpha.md +1 -1
  296. package/docs/rules/required-tags/require-author.md +87 -0
  297. package/docs/rules/required-tags/require-beta.md +1 -1
  298. package/docs/rules/required-tags/require-category.md +87 -0
  299. package/docs/rules/required-tags/require-class.md +71 -0
  300. package/docs/rules/required-tags/require-decorator.md +1 -1
  301. package/docs/rules/required-tags/require-default-value.md +1 -1
  302. package/docs/rules/required-tags/require-deprecated.md +1 -1
  303. package/docs/rules/required-tags/require-document.md +87 -0
  304. package/docs/rules/required-tags/require-enum.md +73 -0
  305. package/docs/rules/required-tags/require-event-property.md +1 -1
  306. package/docs/rules/required-tags/require-event.md +87 -0
  307. package/docs/rules/required-tags/require-example.md +1 -1
  308. package/docs/rules/required-tags/require-expand.md +87 -0
  309. package/docs/rules/required-tags/require-experimental.md +1 -1
  310. package/docs/rules/required-tags/require-function.md +74 -0
  311. package/docs/rules/required-tags/require-group.md +87 -0
  312. package/docs/rules/required-tags/require-hidden.md +87 -0
  313. package/docs/rules/required-tags/require-hideconstructor.md +87 -0
  314. package/docs/rules/required-tags/require-ignore.md +87 -0
  315. package/docs/rules/required-tags/require-import.md +87 -0
  316. package/docs/rules/required-tags/require-include.md +87 -0
  317. package/docs/rules/required-tags/require-inherit-doc.md +1 -1
  318. package/docs/rules/required-tags/require-inline.md +87 -0
  319. package/docs/rules/required-tags/require-interface.md +74 -0
  320. package/docs/rules/required-tags/require-internal.md +1 -1
  321. package/docs/rules/required-tags/require-label.md +1 -1
  322. package/docs/rules/required-tags/require-license.md +87 -0
  323. package/docs/rules/required-tags/require-link.md +1 -1
  324. package/docs/rules/required-tags/require-merge-module-with.md +87 -0
  325. package/docs/rules/required-tags/require-module.md +78 -0
  326. package/docs/rules/required-tags/require-namespace.md +87 -0
  327. package/docs/rules/required-tags/require-overload.md +87 -0
  328. package/docs/rules/required-tags/require-override.md +1 -1
  329. package/docs/rules/required-tags/require-package-documentation.md +44 -24
  330. package/docs/rules/required-tags/require-param.md +45 -25
  331. package/docs/rules/required-tags/require-primary-export.md +87 -0
  332. package/docs/rules/required-tags/require-private.md +87 -0
  333. package/docs/rules/required-tags/require-property.md +87 -0
  334. package/docs/rules/required-tags/require-protected.md +87 -0
  335. package/docs/rules/required-tags/require-remarks.md +40 -25
  336. package/docs/rules/required-tags/require-returns.md +45 -25
  337. package/docs/rules/required-tags/require-since.md +87 -0
  338. package/docs/rules/required-tags/require-sort-strategy.md +87 -0
  339. package/docs/rules/required-tags/require-summary.md +87 -0
  340. package/docs/rules/required-tags/require-template.md +87 -0
  341. package/docs/rules/required-tags/require-throws.md +53 -25
  342. package/docs/rules/required-tags/require-type-param.md +45 -25
  343. package/docs/rules/required-tags/require-use-declared-type.md +87 -0
  344. package/docs/rules/required-tags.md +171 -39
  345. package/docs/rules/restrict-tags.md +203 -0
  346. package/package.json +394 -45
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@typescript-eslint/utils");
4
+ const enforceableEntityKinds = [
5
+ "class",
6
+ "enum",
7
+ "function",
8
+ "interface",
9
+ "namespace",
10
+ "object",
11
+ "type",
12
+ "variable",
13
+ ];
14
+ const defaultRestrictedTags = [
15
+ "@augments",
16
+ "@callback",
17
+ "@extends",
18
+ "@jsx",
19
+ "@satisfies",
20
+ "@type",
21
+ "@typedef",
22
+ "@yields",
23
+ ];
24
+ const defaultEnforceFor = [...enforceableEntityKinds];
25
+ const optionSchema = {
26
+ additionalProperties: false,
27
+ properties: {
28
+ enforceFor: {
29
+ items: {
30
+ enum: [...enforceableEntityKinds],
31
+ type: "string",
32
+ },
33
+ type: "array",
34
+ uniqueItems: true,
35
+ },
36
+ exportMode: {
37
+ description: "Choose whether to check exported declarations, non-exported top-level declarations, or both.",
38
+ enum: [
39
+ "all",
40
+ "exported",
41
+ "non-exported",
42
+ ],
43
+ type: "string",
44
+ },
45
+ includeNonExported: {
46
+ default: false,
47
+ description: 'Legacy alias for exportMode: "all". Also enforce on non-exported declarations when true.',
48
+ type: "boolean",
49
+ },
50
+ mode: {
51
+ default: "deny",
52
+ description: "Tag restriction mode. deny = listed tags are disallowed. allow = only listed tags are permitted.",
53
+ enum: ["allow", "deny"],
54
+ type: "string",
55
+ },
56
+ tags: {
57
+ description: "Tag names used by the selected restriction mode.",
58
+ items: {
59
+ pattern: "^@[A-Za-z][A-Za-z0-9-]*$",
60
+ type: "string",
61
+ },
62
+ type: "array",
63
+ uniqueItems: true,
64
+ },
65
+ },
66
+ type: "object",
67
+ };
68
+ const resolveExportMode = (ruleOption) => {
69
+ if (ruleOption?.includeNonExported === true) {
70
+ return "all";
71
+ }
72
+ return ruleOption?.exportMode ?? "exported";
73
+ };
74
+ const shouldCheckExportedDeclarations = (exportMode) => exportMode === "all" || exportMode === "exported";
75
+ const shouldCheckNonExportedDeclarations = (exportMode) => exportMode === "all" || exportMode === "non-exported";
76
+ const assertUnreachable = (value) => {
77
+ throw new Error(`Unexpected node type: ${String(value)}`);
78
+ };
79
+ const createRule = utils_1.ESLintUtils.RuleCreator((ruleName) => `https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/blob/main/docs/rules/${ruleName}.md`);
80
+ const isSupportedDeclaration = (node) => node.type === utils_1.AST_NODE_TYPES.ClassDeclaration ||
81
+ node.type === utils_1.AST_NODE_TYPES.FunctionDeclaration ||
82
+ node.type === utils_1.AST_NODE_TYPES.TSDeclareFunction ||
83
+ node.type === utils_1.AST_NODE_TYPES.TSEnumDeclaration ||
84
+ node.type === utils_1.AST_NODE_TYPES.TSInterfaceDeclaration ||
85
+ node.type === utils_1.AST_NODE_TYPES.TSModuleDeclaration ||
86
+ node.type === utils_1.AST_NODE_TYPES.TSTypeAliasDeclaration ||
87
+ node.type === utils_1.AST_NODE_TYPES.VariableDeclaration;
88
+ const isSupportedDefaultExportExpression = (node) => node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
89
+ node.type === utils_1.AST_NODE_TYPES.ClassExpression ||
90
+ node.type === utils_1.AST_NODE_TYPES.FunctionExpression ||
91
+ node.type === utils_1.AST_NODE_TYPES.ObjectExpression;
92
+ const getExpressionKind = (node) => {
93
+ if (node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
94
+ node.type === utils_1.AST_NODE_TYPES.FunctionExpression) {
95
+ return "function";
96
+ }
97
+ if (node.type === utils_1.AST_NODE_TYPES.ClassExpression) {
98
+ return "class";
99
+ }
100
+ if (node.type === utils_1.AST_NODE_TYPES.ObjectExpression) {
101
+ return "object";
102
+ }
103
+ return assertUnreachable(node);
104
+ };
105
+ const getEntityDisplayName = (name) => name ?? "<default export>";
106
+ const isTopLevelNode = (node) => node.parent?.type === utils_1.AST_NODE_TYPES.Program;
107
+ const getModuleDeclarationName = (declaration) => {
108
+ if (declaration.id.type === utils_1.AST_NODE_TYPES.Identifier) {
109
+ return declaration.id.name;
110
+ }
111
+ if (declaration.id.type === utils_1.AST_NODE_TYPES.Literal &&
112
+ typeof declaration.id.value === "string") {
113
+ return declaration.id.value;
114
+ }
115
+ return undefined;
116
+ };
117
+ const getTSDocCommentNode = (sourceCode, node) => {
118
+ const comments = sourceCode.getCommentsBefore(node);
119
+ const nearestComment = comments.at(-1);
120
+ if (nearestComment === undefined) {
121
+ return null;
122
+ }
123
+ if (nearestComment.type !== utils_1.AST_TOKEN_TYPES.Block) {
124
+ return null;
125
+ }
126
+ if (!nearestComment.value.startsWith("*")) {
127
+ return null;
128
+ }
129
+ const nearestCommentLoc = nearestComment.loc;
130
+ const nodeLoc = node.loc;
131
+ if (nearestCommentLoc === null || nodeLoc === null) {
132
+ return null;
133
+ }
134
+ const lineGap = nodeLoc.start.line - nearestCommentLoc.end.line;
135
+ if (lineGap < 0 || lineGap > 1) {
136
+ return null;
137
+ }
138
+ return nearestComment;
139
+ };
140
+ const createTargetKey = (target) => {
141
+ const [start, end] = target.reportNode.range;
142
+ return `${start}:${end}:${target.kind}:${target.name ?? ""}`;
143
+ };
144
+ const declarationTargets = (declaration) => {
145
+ if (declaration.type === utils_1.AST_NODE_TYPES.ClassDeclaration) {
146
+ return [
147
+ {
148
+ commentNode: declaration,
149
+ kind: "class",
150
+ name: declaration.id?.name,
151
+ reportNode: declaration,
152
+ },
153
+ ];
154
+ }
155
+ if (declaration.type === utils_1.AST_NODE_TYPES.FunctionDeclaration ||
156
+ declaration.type === utils_1.AST_NODE_TYPES.TSDeclareFunction) {
157
+ return [
158
+ {
159
+ commentNode: declaration,
160
+ kind: "function",
161
+ name: declaration.id?.name,
162
+ reportNode: declaration,
163
+ },
164
+ ];
165
+ }
166
+ if (declaration.type === utils_1.AST_NODE_TYPES.TSEnumDeclaration) {
167
+ return [
168
+ {
169
+ commentNode: declaration,
170
+ kind: "enum",
171
+ name: declaration.id.name,
172
+ reportNode: declaration,
173
+ },
174
+ ];
175
+ }
176
+ if (declaration.type === utils_1.AST_NODE_TYPES.TSInterfaceDeclaration) {
177
+ return [
178
+ {
179
+ commentNode: declaration,
180
+ kind: "interface",
181
+ name: declaration.id.name,
182
+ reportNode: declaration,
183
+ },
184
+ ];
185
+ }
186
+ if (declaration.type === utils_1.AST_NODE_TYPES.TSModuleDeclaration) {
187
+ return [
188
+ {
189
+ commentNode: declaration,
190
+ kind: "namespace",
191
+ name: getModuleDeclarationName(declaration),
192
+ reportNode: declaration,
193
+ },
194
+ ];
195
+ }
196
+ if (declaration.type === utils_1.AST_NODE_TYPES.TSTypeAliasDeclaration) {
197
+ return [
198
+ {
199
+ commentNode: declaration,
200
+ kind: "type",
201
+ name: declaration.id.name,
202
+ reportNode: declaration,
203
+ },
204
+ ];
205
+ }
206
+ if (declaration.type === utils_1.AST_NODE_TYPES.VariableDeclaration) {
207
+ return declaration.declarations.flatMap((declarator) => {
208
+ if (declarator.id.type !== utils_1.AST_NODE_TYPES.Identifier) {
209
+ return [];
210
+ }
211
+ return [
212
+ {
213
+ commentNode: declaration,
214
+ kind: "variable",
215
+ name: declarator.id.name,
216
+ reportNode: declarator,
217
+ },
218
+ ];
219
+ });
220
+ }
221
+ return assertUnreachable(declaration);
222
+ };
223
+ const declarationTargetsWithCommentNode = (declaration, commentNode) => declarationTargets(declaration).map((target) => ({
224
+ ...target,
225
+ commentNode,
226
+ }));
227
+ const extractTagNames = (commentText) => {
228
+ const tagPattern = /(?:^|\W)@(?<tagName>[A-Za-z][-0-9A-Za-z]*)/gu;
229
+ const extractedTagNames = new Set();
230
+ for (const match of commentText.matchAll(tagPattern)) {
231
+ const rawTagName = match.groups?.["tagName"];
232
+ if (rawTagName === undefined) {
233
+ continue;
234
+ }
235
+ extractedTagNames.add(`@${rawTagName}`);
236
+ }
237
+ return extractedTagNames;
238
+ };
239
+ const getConfiguredTagSet = (ruleOption) => {
240
+ const configuredTags = ruleOption?.tags ?? defaultRestrictedTags;
241
+ return new Set(configuredTags);
242
+ };
243
+ /** ESLint rule module implementing tsdoc-require-2/restrict-tags. */
244
+ const restrictTagsRule = createRule({
245
+ create(context) {
246
+ const declarationsByName = new Map();
247
+ const checkedTargets = new Set();
248
+ const sourceCode = context.sourceCode;
249
+ const ruleOption = context.options.at(0);
250
+ const enabledKinds = new Set(ruleOption?.enforceFor ?? defaultEnforceFor);
251
+ const exportMode = resolveExportMode(ruleOption);
252
+ const restrictMode = ruleOption?.mode ?? "deny";
253
+ const configuredTagSet = getConfiguredTagSet(ruleOption);
254
+ const allowedTags = [...configuredTagSet];
255
+ const checkTarget = (target) => {
256
+ if (!enabledKinds.has(target.kind)) {
257
+ return;
258
+ }
259
+ const targetKey = createTargetKey(target);
260
+ if (checkedTargets.has(targetKey)) {
261
+ return;
262
+ }
263
+ checkedTargets.add(targetKey);
264
+ const commentNode = getTSDocCommentNode(sourceCode, target.commentNode);
265
+ if (commentNode === null) {
266
+ return;
267
+ }
268
+ if (configuredTagSet.size === 0) {
269
+ return;
270
+ }
271
+ const foundTags = extractTagNames(commentNode.value);
272
+ for (const tagName of foundTags) {
273
+ const isConfiguredTag = configuredTagSet.has(tagName);
274
+ if (restrictMode === "deny" && isConfiguredTag) {
275
+ context.report({
276
+ data: {
277
+ entityKind: target.kind,
278
+ entityName: getEntityDisplayName(target.name),
279
+ tagName,
280
+ },
281
+ messageId: "disallowedTag",
282
+ node: target.reportNode,
283
+ });
284
+ continue;
285
+ }
286
+ if (restrictMode === "allow" && !isConfiguredTag) {
287
+ context.report({
288
+ data: {
289
+ allowedTags: allowedTags.length === 0
290
+ ? "<none>"
291
+ : allowedTags.join(", "),
292
+ entityKind: target.kind,
293
+ entityName: getEntityDisplayName(target.name),
294
+ tagName,
295
+ },
296
+ messageId: "tagNotAllowed",
297
+ node: target.reportNode,
298
+ });
299
+ }
300
+ }
301
+ };
302
+ const checkDeclarationWithExportComment = (declaration, exportNode) => {
303
+ for (const target of declarationTargetsWithCommentNode(declaration, exportNode)) {
304
+ checkTarget(target);
305
+ }
306
+ };
307
+ const trackDeclarationTargets = (declaration) => {
308
+ for (const target of declarationTargets(declaration)) {
309
+ if (target.name === undefined) {
310
+ continue;
311
+ }
312
+ declarationsByName.set(target.name, target);
313
+ }
314
+ };
315
+ const checkIdentifierExport = (identifier) => {
316
+ const target = declarationsByName.get(identifier.name);
317
+ if (target !== undefined) {
318
+ checkTarget(target);
319
+ }
320
+ };
321
+ return {
322
+ ExportDefaultDeclaration(exportNode) {
323
+ if (!shouldCheckExportedDeclarations(exportMode) ||
324
+ !isTopLevelNode(exportNode)) {
325
+ return;
326
+ }
327
+ const { declaration } = exportNode;
328
+ if (declaration.type === utils_1.AST_NODE_TYPES.Identifier) {
329
+ checkIdentifierExport(declaration);
330
+ return;
331
+ }
332
+ if (isSupportedDeclaration(declaration)) {
333
+ checkDeclarationWithExportComment(declaration, exportNode);
334
+ return;
335
+ }
336
+ if (isSupportedDefaultExportExpression(declaration)) {
337
+ checkTarget({
338
+ commentNode: exportNode,
339
+ kind: getExpressionKind(declaration),
340
+ name: undefined,
341
+ reportNode: declaration,
342
+ });
343
+ }
344
+ },
345
+ ExportNamedDeclaration(exportNode) {
346
+ if (!shouldCheckExportedDeclarations(exportMode) ||
347
+ !isTopLevelNode(exportNode)) {
348
+ return;
349
+ }
350
+ if (exportNode.declaration !== null &&
351
+ isSupportedDeclaration(exportNode.declaration)) {
352
+ checkDeclarationWithExportComment(exportNode.declaration, exportNode);
353
+ }
354
+ if (exportNode.source !== null) {
355
+ return;
356
+ }
357
+ for (const specifier of exportNode.specifiers) {
358
+ if (specifier.type !== utils_1.AST_NODE_TYPES.ExportSpecifier) {
359
+ continue;
360
+ }
361
+ checkIdentifierExport(specifier.local);
362
+ }
363
+ },
364
+ Program(programNode) {
365
+ declarationsByName.clear();
366
+ checkedTargets.clear();
367
+ for (const statement of programNode.body) {
368
+ if (isSupportedDeclaration(statement)) {
369
+ if (shouldCheckNonExportedDeclarations(exportMode)) {
370
+ for (const target of declarationTargetsWithCommentNode(statement, statement)) {
371
+ checkTarget(target);
372
+ }
373
+ }
374
+ if (shouldCheckExportedDeclarations(exportMode)) {
375
+ trackDeclarationTargets(statement);
376
+ }
377
+ continue;
378
+ }
379
+ if (shouldCheckExportedDeclarations(exportMode) &&
380
+ statement.type ===
381
+ utils_1.AST_NODE_TYPES.ExportNamedDeclaration &&
382
+ statement.declaration !== null &&
383
+ isSupportedDeclaration(statement.declaration)) {
384
+ trackDeclarationTargets(statement.declaration);
385
+ }
386
+ }
387
+ },
388
+ };
389
+ },
390
+ meta: {
391
+ defaultOptions: [
392
+ {
393
+ enforceFor: [...enforceableEntityKinds],
394
+ exportMode: "exported",
395
+ mode: "deny",
396
+ tags: [...defaultRestrictedTags],
397
+ },
398
+ ],
399
+ deprecated: false,
400
+ docs: {
401
+ description: "disallow or allow only specific TSDoc/JSDoc tags in TSDoc blocks using configurable declaration scope.",
402
+ frozen: false,
403
+ recommended: false,
404
+ url: "https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/blob/main/docs/rules/restrict-tags.md",
405
+ },
406
+ messages: {
407
+ disallowedTag: "TSDoc for {{entityKind}} {{entityName}} contains disallowed tag {{tagName}}.",
408
+ tagNotAllowed: "TSDoc for {{entityKind}} {{entityName}} contains tag {{tagName}}, which is not in the allowed set: {{allowedTags}}.",
409
+ },
410
+ schema: [optionSchema],
411
+ type: "problem",
412
+ },
413
+ name: "restrict-tags",
414
+ });
415
+ exports.default = restrictTagsRule;
416
+ //# sourceMappingURL=restrict-tags.js.map
@@ -0,0 +1,17 @@
1
+ import type { TSESLint } from "@typescript-eslint/utils";
2
+ type EntityKind = "class" | "enum" | "function" | "interface" | "namespace" | "object" | "type" | "variable";
3
+ type ExportMode = "all" | "exported" | "non-exported";
4
+ type MessageIds = "disallowedTag" | "tagNotAllowed";
5
+ type Options = [RuleOption];
6
+ type RestrictMode = "allow" | "deny";
7
+ type RuleOption = {
8
+ enforceFor?: readonly EntityKind[];
9
+ exportMode?: ExportMode;
10
+ includeNonExported?: boolean;
11
+ mode?: RestrictMode;
12
+ tags?: readonly `@${string}`[];
13
+ };
14
+ /** ESLint rule module implementing tsdoc-require-2/restrict-tags. */
15
+ declare const restrictTagsRule: TSESLint.RuleModule<MessageIds, Options>;
16
+ export default restrictTagsRule;
17
+ //# sourceMappingURL=restrict-tags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restrict-tags.d.ts","sourceRoot":"","sources":["../../src/rules/restrict-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAQ/E,KAAK,UAAU,GACT,OAAO,GACP,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,QAAQ,GACR,MAAM,GACN,UAAU,CAAC;AACjB,KAAK,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,cAAc,CAAC;AACtD,KAAK,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;AAEpD,KAAK,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,KAAK,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAMrC,KAAK,UAAU,GAAG;IACd,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,IAAI,MAAM,EAAE,EAAE,CAAC;CAClC,CAAC;AA2VF,qEAAqE;AACrE,QAAA,MAAM,gBAAgB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CA4O7D,CAAC;AAEH,eAAe,gBAAgB,CAAC"}