@depup/eslint-plugin-jsdoc 62.8.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/LICENSE +24 -0
  2. package/README.md +33 -0
  3. package/changes.json +18 -0
  4. package/dist/WarnSettings.cjs +38 -0
  5. package/dist/WarnSettings.cjs.map +1 -0
  6. package/dist/WarnSettings.d.ts +17 -0
  7. package/dist/alignTransform.cjs +402 -0
  8. package/dist/alignTransform.cjs.map +1 -0
  9. package/dist/alignTransform.d.ts +34 -0
  10. package/dist/buildForbidRuleDefinition.cjs +101 -0
  11. package/dist/buildForbidRuleDefinition.cjs.map +1 -0
  12. package/dist/buildForbidRuleDefinition.d.ts +15 -0
  13. package/dist/buildRejectOrPreferRuleDefinition.cjs +352 -0
  14. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -0
  15. package/dist/buildRejectOrPreferRuleDefinition.d.ts +9 -0
  16. package/dist/cjs/WarnSettings.d.ts +16 -0
  17. package/dist/cjs/alignTransform.d.ts +33 -0
  18. package/dist/cjs/buildForbidRuleDefinition.d.ts +14 -0
  19. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +8 -0
  20. package/dist/cjs/defaultTagOrder.d.ts +4 -0
  21. package/dist/cjs/exportParser.d.ts +40 -0
  22. package/dist/cjs/getDefaultTagStructureForMode.d.ts +10 -0
  23. package/dist/cjs/getJsdocProcessorPlugin.d.cts +5 -0
  24. package/dist/cjs/getJsdocProcessorPlugin.d.ts +66 -0
  25. package/dist/cjs/index-cjs.d.ts +23 -0
  26. package/dist/cjs/index.cjs.d.cts +2 -0
  27. package/dist/cjs/iterateJsdoc.d.cts +7 -0
  28. package/dist/cjs/iterateJsdoc.d.ts +495 -0
  29. package/dist/cjs/jsdocUtils.d.ts +493 -0
  30. package/dist/cjs/rules/checkAccess.d.ts +2 -0
  31. package/dist/cjs/rules/checkAlignment.d.ts +2 -0
  32. package/dist/cjs/rules/checkExamples.d.ts +3 -0
  33. package/dist/cjs/rules/checkIndentation.d.ts +2 -0
  34. package/dist/cjs/rules/checkLineAlignment.d.ts +9 -0
  35. package/dist/cjs/rules/checkParamNames.d.ts +2 -0
  36. package/dist/cjs/rules/checkPropertyNames.d.ts +2 -0
  37. package/dist/cjs/rules/checkSyntax.d.ts +2 -0
  38. package/dist/cjs/rules/checkTagNames.d.ts +2 -0
  39. package/dist/cjs/rules/checkTemplateNames.d.ts +2 -0
  40. package/dist/cjs/rules/checkTypes.d.ts +7 -0
  41. package/dist/cjs/rules/checkValues.d.ts +2 -0
  42. package/dist/cjs/rules/convertToJsdocComments.d.ts +266 -0
  43. package/dist/cjs/rules/emptyTags.d.ts +2 -0
  44. package/dist/cjs/rules/escapeInlineTags.d.ts +2 -0
  45. package/dist/cjs/rules/implementsOnClasses.d.ts +2 -0
  46. package/dist/cjs/rules/importsAsDependencies.d.ts +2 -0
  47. package/dist/cjs/rules/informativeDocs.d.ts +2 -0
  48. package/dist/cjs/rules/linesBeforeBlock.d.ts +2 -0
  49. package/dist/cjs/rules/matchDescription.d.ts +2 -0
  50. package/dist/cjs/rules/matchName.d.ts +2 -0
  51. package/dist/cjs/rules/multilineBlocks.d.ts +2 -0
  52. package/dist/cjs/rules/noBadBlocks.d.ts +2 -0
  53. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +2 -0
  54. package/dist/cjs/rules/noBlankBlocks.d.ts +2 -0
  55. package/dist/cjs/rules/noDefaults.d.ts +2 -0
  56. package/dist/cjs/rules/noMissingSyntax.d.ts +9 -0
  57. package/dist/cjs/rules/noMultiAsterisks.d.ts +2 -0
  58. package/dist/cjs/rules/noRestrictedSyntax.d.ts +2 -0
  59. package/dist/cjs/rules/noTypes.d.ts +2 -0
  60. package/dist/cjs/rules/noUndefinedTypes.d.ts +2 -0
  61. package/dist/cjs/rules/preferImportTag.d.ts +2 -0
  62. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +2 -0
  63. package/dist/cjs/rules/requireDescription.d.ts +2 -0
  64. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +2 -0
  65. package/dist/cjs/rules/requireExample.d.ts +2 -0
  66. package/dist/cjs/rules/requireFileOverview.d.ts +2 -0
  67. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +2 -0
  68. package/dist/cjs/rules/requireJsdoc.d.ts +24 -0
  69. package/dist/cjs/rules/requireParam.d.ts +3 -0
  70. package/dist/cjs/rules/requireParamDescription.d.ts +2 -0
  71. package/dist/cjs/rules/requireParamName.d.ts +2 -0
  72. package/dist/cjs/rules/requireParamType.d.ts +2 -0
  73. package/dist/cjs/rules/requireProperty.d.ts +2 -0
  74. package/dist/cjs/rules/requirePropertyDescription.d.ts +2 -0
  75. package/dist/cjs/rules/requirePropertyName.d.ts +2 -0
  76. package/dist/cjs/rules/requirePropertyType.d.ts +2 -0
  77. package/dist/cjs/rules/requireRejects.d.ts +2 -0
  78. package/dist/cjs/rules/requireReturns.d.ts +2 -0
  79. package/dist/cjs/rules/requireReturnsCheck.d.ts +2 -0
  80. package/dist/cjs/rules/requireReturnsDescription.d.ts +2 -0
  81. package/dist/cjs/rules/requireReturnsType.d.ts +2 -0
  82. package/dist/cjs/rules/requireTags.d.ts +2 -0
  83. package/dist/cjs/rules/requireTemplate.d.ts +2 -0
  84. package/dist/cjs/rules/requireThrows.d.ts +2 -0
  85. package/dist/cjs/rules/requireYields.d.ts +2 -0
  86. package/dist/cjs/rules/requireYieldsCheck.d.ts +2 -0
  87. package/dist/cjs/rules/sortTags.d.ts +2 -0
  88. package/dist/cjs/rules/tagLines.d.ts +2 -0
  89. package/dist/cjs/rules/textEscaping.d.ts +2 -0
  90. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +2 -0
  91. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +2 -0
  92. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +2 -0
  93. package/dist/cjs/rules/tsPreferFunctionType.d.ts +2 -0
  94. package/dist/cjs/rules/typeFormatting.d.ts +2 -0
  95. package/dist/cjs/rules/validTypes.d.ts +2 -0
  96. package/dist/cjs/tagNames.d.ts +15 -0
  97. package/dist/cjs/utils/hasReturnValue.d.ts +19 -0
  98. package/dist/defaultTagOrder.cjs +46 -0
  99. package/dist/defaultTagOrder.cjs.map +1 -0
  100. package/dist/defaultTagOrder.d.ts +5 -0
  101. package/dist/exportParser.cjs +732 -0
  102. package/dist/exportParser.cjs.map +1 -0
  103. package/dist/exportParser.d.ts +41 -0
  104. package/dist/generateDocs.cjs +342 -0
  105. package/dist/generateDocs.cjs.map +1 -0
  106. package/dist/generateOptions.cjs +62 -0
  107. package/dist/generateOptions.cjs.map +1 -0
  108. package/dist/generateRule.cjs +248 -0
  109. package/dist/generateRule.cjs.map +1 -0
  110. package/dist/generateRuleTypes.cjs +24 -0
  111. package/dist/generateRuleTypes.cjs.map +1 -0
  112. package/dist/getDefaultTagStructureForMode.cjs +289 -0
  113. package/dist/getDefaultTagStructureForMode.cjs.map +1 -0
  114. package/dist/getDefaultTagStructureForMode.d.ts +11 -0
  115. package/dist/getJsdocProcessorPlugin.cjs +587 -0
  116. package/dist/getJsdocProcessorPlugin.cjs.map +1 -0
  117. package/dist/getJsdocProcessorPlugin.cts +5 -0
  118. package/dist/getJsdocProcessorPlugin.d.ts +67 -0
  119. package/dist/index-cjs.cjs +595 -0
  120. package/dist/index-cjs.cjs.map +1 -0
  121. package/dist/index-cjs.d.ts +24 -0
  122. package/dist/index-esm.cjs +162 -0
  123. package/dist/index-esm.cjs.map +1 -0
  124. package/dist/index-esm.d.ts +72 -0
  125. package/dist/index.cjs +743 -0
  126. package/dist/index.cjs.cts +3 -0
  127. package/dist/index.cjs.map +1 -0
  128. package/dist/index.d.ts +93 -0
  129. package/dist/iterateJsdoc.cjs +2150 -0
  130. package/dist/iterateJsdoc.cjs.map +1 -0
  131. package/dist/iterateJsdoc.cts +7 -0
  132. package/dist/iterateJsdoc.d.ts +496 -0
  133. package/dist/jsdocUtils.cjs +1725 -0
  134. package/dist/jsdocUtils.cjs.map +1 -0
  135. package/dist/jsdocUtils.d.ts +494 -0
  136. package/dist/rules/checkAccess.cjs +40 -0
  137. package/dist/rules/checkAccess.cjs.map +1 -0
  138. package/dist/rules/checkAccess.d.ts +3 -0
  139. package/dist/rules/checkAlignment.cjs +78 -0
  140. package/dist/rules/checkAlignment.cjs.map +1 -0
  141. package/dist/rules/checkAlignment.d.ts +3 -0
  142. package/dist/rules/checkExamples.cjs +521 -0
  143. package/dist/rules/checkExamples.cjs.map +1 -0
  144. package/dist/rules/checkExamples.d.ts +4 -0
  145. package/dist/rules/checkIndentation.cjs +170 -0
  146. package/dist/rules/checkIndentation.cjs.map +1 -0
  147. package/dist/rules/checkIndentation.d.ts +3 -0
  148. package/dist/rules/checkLineAlignment.cjs +398 -0
  149. package/dist/rules/checkLineAlignment.cjs.map +1 -0
  150. package/dist/rules/checkLineAlignment.d.ts +10 -0
  151. package/dist/rules/checkParamNames.cjs +407 -0
  152. package/dist/rules/checkParamNames.cjs.map +1 -0
  153. package/dist/rules/checkParamNames.d.ts +3 -0
  154. package/dist/rules/checkPropertyNames.cjs +135 -0
  155. package/dist/rules/checkPropertyNames.cjs.map +1 -0
  156. package/dist/rules/checkPropertyNames.d.ts +3 -0
  157. package/dist/rules/checkSyntax.cjs +38 -0
  158. package/dist/rules/checkSyntax.cjs.map +1 -0
  159. package/dist/rules/checkSyntax.d.ts +3 -0
  160. package/dist/rules/checkTagNames.cjs +312 -0
  161. package/dist/rules/checkTagNames.cjs.map +1 -0
  162. package/dist/rules/checkTagNames.d.ts +3 -0
  163. package/dist/rules/checkTemplateNames.cjs +185 -0
  164. package/dist/rules/checkTemplateNames.cjs.map +1 -0
  165. package/dist/rules/checkTemplateNames.d.ts +3 -0
  166. package/dist/rules/checkTypes.cjs +111 -0
  167. package/dist/rules/checkTypes.cjs.map +1 -0
  168. package/dist/rules/checkTypes.d.ts +8 -0
  169. package/dist/rules/checkValues.cjs +166 -0
  170. package/dist/rules/checkValues.cjs.map +1 -0
  171. package/dist/rules/checkValues.d.ts +3 -0
  172. package/dist/rules/convertToJsdocComments.cjs +356 -0
  173. package/dist/rules/convertToJsdocComments.cjs.map +1 -0
  174. package/dist/rules/convertToJsdocComments.d.ts +267 -0
  175. package/dist/rules/emptyTags.cjs +85 -0
  176. package/dist/rules/emptyTags.cjs.map +1 -0
  177. package/dist/rules/emptyTags.d.ts +3 -0
  178. package/dist/rules/escapeInlineTags.cjs +149 -0
  179. package/dist/rules/escapeInlineTags.cjs.map +1 -0
  180. package/dist/rules/escapeInlineTags.d.ts +3 -0
  181. package/dist/rules/implementsOnClasses.cjs +74 -0
  182. package/dist/rules/implementsOnClasses.cjs.map +1 -0
  183. package/dist/rules/implementsOnClasses.d.ts +3 -0
  184. package/dist/rules/importsAsDependencies.cjs +104 -0
  185. package/dist/rules/importsAsDependencies.cjs.map +1 -0
  186. package/dist/rules/importsAsDependencies.d.ts +3 -0
  187. package/dist/rules/informativeDocs.cjs +187 -0
  188. package/dist/rules/informativeDocs.cjs.map +1 -0
  189. package/dist/rules/informativeDocs.d.ts +3 -0
  190. package/dist/rules/linesBeforeBlock.cjs +120 -0
  191. package/dist/rules/linesBeforeBlock.cjs.map +1 -0
  192. package/dist/rules/linesBeforeBlock.d.ts +3 -0
  193. package/dist/rules/matchDescription.cjs +356 -0
  194. package/dist/rules/matchDescription.cjs.map +1 -0
  195. package/dist/rules/matchDescription.d.ts +3 -0
  196. package/dist/rules/matchName.cjs +160 -0
  197. package/dist/rules/matchName.cjs.map +1 -0
  198. package/dist/rules/matchName.d.ts +3 -0
  199. package/dist/rules/multilineBlocks.cjs +431 -0
  200. package/dist/rules/multilineBlocks.cjs.map +1 -0
  201. package/dist/rules/multilineBlocks.d.ts +3 -0
  202. package/dist/rules/noBadBlocks.cjs +100 -0
  203. package/dist/rules/noBadBlocks.cjs.map +1 -0
  204. package/dist/rules/noBadBlocks.d.ts +3 -0
  205. package/dist/rules/noBlankBlockDescriptions.cjs +63 -0
  206. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -0
  207. package/dist/rules/noBlankBlockDescriptions.d.ts +3 -0
  208. package/dist/rules/noBlankBlocks.cjs +54 -0
  209. package/dist/rules/noBlankBlocks.cjs.map +1 -0
  210. package/dist/rules/noBlankBlocks.d.ts +3 -0
  211. package/dist/rules/noDefaults.cjs +102 -0
  212. package/dist/rules/noDefaults.cjs.map +1 -0
  213. package/dist/rules/noDefaults.d.ts +3 -0
  214. package/dist/rules/noMissingSyntax.cjs +196 -0
  215. package/dist/rules/noMissingSyntax.cjs.map +1 -0
  216. package/dist/rules/noMissingSyntax.d.ts +10 -0
  217. package/dist/rules/noMultiAsterisks.cjs +126 -0
  218. package/dist/rules/noMultiAsterisks.cjs.map +1 -0
  219. package/dist/rules/noMultiAsterisks.d.ts +3 -0
  220. package/dist/rules/noRestrictedSyntax.cjs +68 -0
  221. package/dist/rules/noRestrictedSyntax.cjs.map +1 -0
  222. package/dist/rules/noRestrictedSyntax.d.ts +3 -0
  223. package/dist/rules/noTypes.cjs +101 -0
  224. package/dist/rules/noTypes.cjs.map +1 -0
  225. package/dist/rules/noTypes.d.ts +3 -0
  226. package/dist/rules/noUndefinedTypes.cjs +588 -0
  227. package/dist/rules/noUndefinedTypes.cjs.map +1 -0
  228. package/dist/rules/noUndefinedTypes.d.ts +3 -0
  229. package/dist/rules/preferImportTag.cjs +362 -0
  230. package/dist/rules/preferImportTag.cjs.map +1 -0
  231. package/dist/rules/preferImportTag.d.ts +3 -0
  232. package/dist/rules/requireAsteriskPrefix.cjs +190 -0
  233. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -0
  234. package/dist/rules/requireAsteriskPrefix.d.ts +3 -0
  235. package/dist/rules/requireDescription.cjs +164 -0
  236. package/dist/rules/requireDescription.cjs.map +1 -0
  237. package/dist/rules/requireDescription.d.ts +3 -0
  238. package/dist/rules/requireDescriptionCompleteSentence.cjs +321 -0
  239. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -0
  240. package/dist/rules/requireDescriptionCompleteSentence.d.ts +3 -0
  241. package/dist/rules/requireExample.cjs +133 -0
  242. package/dist/rules/requireExample.cjs.map +1 -0
  243. package/dist/rules/requireExample.d.ts +3 -0
  244. package/dist/rules/requireFileOverview.cjs +194 -0
  245. package/dist/rules/requireFileOverview.cjs.map +1 -0
  246. package/dist/rules/requireFileOverview.d.ts +3 -0
  247. package/dist/rules/requireHyphenBeforeParamDescription.cjs +166 -0
  248. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -0
  249. package/dist/rules/requireHyphenBeforeParamDescription.d.ts +3 -0
  250. package/dist/rules/requireJsdoc.cjs +722 -0
  251. package/dist/rules/requireJsdoc.cjs.map +1 -0
  252. package/dist/rules/requireJsdoc.d.ts +25 -0
  253. package/dist/rules/requireParam.cjs +772 -0
  254. package/dist/rules/requireParam.cjs.map +1 -0
  255. package/dist/rules/requireParam.d.ts +4 -0
  256. package/dist/rules/requireParamDescription.cjs +105 -0
  257. package/dist/rules/requireParamDescription.cjs.map +1 -0
  258. package/dist/rules/requireParamDescription.d.ts +3 -0
  259. package/dist/rules/requireParamName.cjs +68 -0
  260. package/dist/rules/requireParamName.cjs.map +1 -0
  261. package/dist/rules/requireParamName.d.ts +3 -0
  262. package/dist/rules/requireParamType.cjs +104 -0
  263. package/dist/rules/requireParamType.cjs.map +1 -0
  264. package/dist/rules/requireParamType.d.ts +3 -0
  265. package/dist/rules/requireProperty.cjs +63 -0
  266. package/dist/rules/requireProperty.cjs.map +1 -0
  267. package/dist/rules/requireProperty.d.ts +3 -0
  268. package/dist/rules/requirePropertyDescription.cjs +29 -0
  269. package/dist/rules/requirePropertyDescription.cjs.map +1 -0
  270. package/dist/rules/requirePropertyDescription.d.ts +3 -0
  271. package/dist/rules/requirePropertyName.cjs +29 -0
  272. package/dist/rules/requirePropertyName.cjs.map +1 -0
  273. package/dist/rules/requirePropertyName.d.ts +3 -0
  274. package/dist/rules/requirePropertyType.cjs +29 -0
  275. package/dist/rules/requirePropertyType.cjs.map +1 -0
  276. package/dist/rules/requirePropertyType.d.ts +3 -0
  277. package/dist/rules/requireRejects.cjs +226 -0
  278. package/dist/rules/requireRejects.cjs.map +1 -0
  279. package/dist/rules/requireRejects.d.ts +3 -0
  280. package/dist/rules/requireReturns.cjs +262 -0
  281. package/dist/rules/requireReturns.cjs.map +1 -0
  282. package/dist/rules/requireReturns.d.ts +3 -0
  283. package/dist/rules/requireReturnsCheck.cjs +140 -0
  284. package/dist/rules/requireReturnsCheck.cjs.map +1 -0
  285. package/dist/rules/requireReturnsCheck.d.ts +3 -0
  286. package/dist/rules/requireReturnsDescription.cjs +72 -0
  287. package/dist/rules/requireReturnsDescription.cjs.map +1 -0
  288. package/dist/rules/requireReturnsDescription.d.ts +3 -0
  289. package/dist/rules/requireReturnsType.cjs +68 -0
  290. package/dist/rules/requireReturnsType.cjs.map +1 -0
  291. package/dist/rules/requireReturnsType.d.ts +3 -0
  292. package/dist/rules/requireTags.cjs +74 -0
  293. package/dist/rules/requireTags.cjs.map +1 -0
  294. package/dist/rules/requireTags.d.ts +3 -0
  295. package/dist/rules/requireTemplate.cjs +220 -0
  296. package/dist/rules/requireTemplate.cjs.map +1 -0
  297. package/dist/rules/requireTemplate.d.ts +3 -0
  298. package/dist/rules/requireThrows.cjs +118 -0
  299. package/dist/rules/requireThrows.cjs.map +1 -0
  300. package/dist/rules/requireThrows.d.ts +3 -0
  301. package/dist/rules/requireYields.cjs +224 -0
  302. package/dist/rules/requireYields.cjs.map +1 -0
  303. package/dist/rules/requireYields.d.ts +3 -0
  304. package/dist/rules/requireYieldsCheck.cjs +179 -0
  305. package/dist/rules/requireYieldsCheck.cjs.map +1 -0
  306. package/dist/rules/requireYieldsCheck.d.ts +3 -0
  307. package/dist/rules/sortTags.cjs +656 -0
  308. package/dist/rules/sortTags.cjs.map +1 -0
  309. package/dist/rules/sortTags.d.ts +3 -0
  310. package/dist/rules/tagLines.cjs +374 -0
  311. package/dist/rules/tagLines.cjs.map +1 -0
  312. package/dist/rules/tagLines.d.ts +3 -0
  313. package/dist/rules/textEscaping.cjs +141 -0
  314. package/dist/rules/textEscaping.cjs.map +1 -0
  315. package/dist/rules/textEscaping.d.ts +3 -0
  316. package/dist/rules/tsMethodSignatureStyle.cjs +240 -0
  317. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -0
  318. package/dist/rules/tsMethodSignatureStyle.d.ts +3 -0
  319. package/dist/rules/tsNoEmptyObjectType.cjs +62 -0
  320. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -0
  321. package/dist/rules/tsNoEmptyObjectType.d.ts +3 -0
  322. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +104 -0
  323. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -0
  324. package/dist/rules/tsNoUnnecessaryTemplateExpression.d.ts +3 -0
  325. package/dist/rules/tsPreferFunctionType.cjs +110 -0
  326. package/dist/rules/tsPreferFunctionType.cjs.map +1 -0
  327. package/dist/rules/tsPreferFunctionType.d.ts +3 -0
  328. package/dist/rules/typeFormatting.cjs +607 -0
  329. package/dist/rules/typeFormatting.cjs.map +1 -0
  330. package/dist/rules/typeFormatting.d.ts +3 -0
  331. package/dist/rules/validTypes.cjs +328 -0
  332. package/dist/rules/validTypes.cjs.map +1 -0
  333. package/dist/rules/validTypes.d.ts +3 -0
  334. package/dist/rules.d.ts +3203 -0
  335. package/dist/tagNames.cjs +244 -0
  336. package/dist/tagNames.cjs.map +1 -0
  337. package/dist/tagNames.d.ts +16 -0
  338. package/dist/to-valid-identifier.cjs +263 -0
  339. package/dist/utils/hasReturnValue.cjs +495 -0
  340. package/dist/utils/hasReturnValue.cjs.map +1 -0
  341. package/dist/utils/hasReturnValue.d.ts +20 -0
  342. package/package.json +220 -0
  343. package/rollup.config.js +16 -0
  344. package/src/WarnSettings.js +34 -0
  345. package/src/alignTransform.js +444 -0
  346. package/src/buildForbidRuleDefinition.js +106 -0
  347. package/src/buildRejectOrPreferRuleDefinition.js +481 -0
  348. package/src/defaultTagOrder.js +169 -0
  349. package/src/exportParser.js +973 -0
  350. package/src/getDefaultTagStructureForMode.js +968 -0
  351. package/src/getJsdocProcessorPlugin.cts +5 -0
  352. package/src/getJsdocProcessorPlugin.js +692 -0
  353. package/src/index-cjs.js +755 -0
  354. package/src/index-esm.js +196 -0
  355. package/src/index.cjs.cts +3 -0
  356. package/src/index.js +940 -0
  357. package/src/iterateJsdoc.cts +7 -0
  358. package/src/iterateJsdoc.js +2612 -0
  359. package/src/jsdocUtils.js +2158 -0
  360. package/src/rules/checkAccess.js +45 -0
  361. package/src/rules/checkAlignment.js +82 -0
  362. package/src/rules/checkExamples.js +613 -0
  363. package/src/rules/checkIndentation.js +176 -0
  364. package/src/rules/checkLineAlignment.js +453 -0
  365. package/src/rules/checkParamNames.js +541 -0
  366. package/src/rules/checkPropertyNames.js +174 -0
  367. package/src/rules/checkSyntax.js +30 -0
  368. package/src/rules/checkTagNames.js +414 -0
  369. package/src/rules/checkTemplateNames.js +208 -0
  370. package/src/rules/checkTypes.js +130 -0
  371. package/src/rules/checkValues.js +264 -0
  372. package/src/rules/convertToJsdocComments.js +444 -0
  373. package/src/rules/emptyTags.js +106 -0
  374. package/src/rules/escapeInlineTags.js +189 -0
  375. package/src/rules/implementsOnClasses.js +78 -0
  376. package/src/rules/importsAsDependencies.js +132 -0
  377. package/src/rules/informativeDocs.js +228 -0
  378. package/src/rules/linesBeforeBlock.js +144 -0
  379. package/src/rules/matchDescription.js +413 -0
  380. package/src/rules/matchName.js +179 -0
  381. package/src/rules/multilineBlocks.js +562 -0
  382. package/src/rules/noBadBlocks.js +127 -0
  383. package/src/rules/noBlankBlockDescriptions.js +69 -0
  384. package/src/rules/noBlankBlocks.js +55 -0
  385. package/src/rules/noDefaults.js +104 -0
  386. package/src/rules/noMissingSyntax.js +215 -0
  387. package/src/rules/noMultiAsterisks.js +162 -0
  388. package/src/rules/noRestrictedSyntax.js +72 -0
  389. package/src/rules/noTypes.js +108 -0
  390. package/src/rules/noUndefinedTypes.js +797 -0
  391. package/src/rules/preferImportTag.js +521 -0
  392. package/src/rules/requireAsteriskPrefix.js +217 -0
  393. package/src/rules/requireDescription.js +190 -0
  394. package/src/rules/requireDescriptionCompleteSentence.js +376 -0
  395. package/src/rules/requireExample.js +143 -0
  396. package/src/rules/requireFileOverview.js +213 -0
  397. package/src/rules/requireHyphenBeforeParamDescription.js +210 -0
  398. package/src/rules/requireJsdoc.js +897 -0
  399. package/src/rules/requireParam.js +848 -0
  400. package/src/rules/requireParamDescription.js +110 -0
  401. package/src/rules/requireParamName.js +69 -0
  402. package/src/rules/requireParamType.js +109 -0
  403. package/src/rules/requireProperty.js +66 -0
  404. package/src/rules/requirePropertyDescription.js +25 -0
  405. package/src/rules/requirePropertyName.js +25 -0
  406. package/src/rules/requirePropertyType.js +25 -0
  407. package/src/rules/requireRejects.js +246 -0
  408. package/src/rules/requireReturns.js +291 -0
  409. package/src/rules/requireReturnsCheck.js +180 -0
  410. package/src/rules/requireReturnsDescription.js +73 -0
  411. package/src/rules/requireReturnsType.js +65 -0
  412. package/src/rules/requireTags.js +85 -0
  413. package/src/rules/requireTemplate.js +246 -0
  414. package/src/rules/requireThrows.js +128 -0
  415. package/src/rules/requireYields.js +265 -0
  416. package/src/rules/requireYieldsCheck.js +226 -0
  417. package/src/rules/sortTags.js +766 -0
  418. package/src/rules/tagLines.js +486 -0
  419. package/src/rules/textEscaping.js +158 -0
  420. package/src/rules/tsMethodSignatureStyle.js +300 -0
  421. package/src/rules/tsNoEmptyObjectType.js +61 -0
  422. package/src/rules/tsNoUnnecessaryTemplateExpression.js +130 -0
  423. package/src/rules/tsPreferFunctionType.js +127 -0
  424. package/src/rules/typeFormatting.js +690 -0
  425. package/src/rules/validTypes.js +466 -0
  426. package/src/rules.d.ts +3203 -0
  427. package/src/tagNames.js +301 -0
  428. package/src/utils/hasReturnValue.js +572 -0
  429. package/typings/babel__eslint-parser.d.ts +1 -0
  430. package/typings/gitdown.d.ts +16 -0
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+
3
+ var _camelcase = _interopRequireDefault(require("camelcase"));
4
+ var _nodeFs = require("node:fs");
5
+ var _promises = _interopRequireDefault(require("node:fs/promises"));
6
+ var _nodePath = require("node:path");
7
+ var _openEditor = _interopRequireDefault(require("open-editor"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /* eslint-disable no-console -- CLI */ /**
10
+ * @example
11
+ * ```shell
12
+ * pnpm run create-rule my-new-rule -- --recommended
13
+ * ```
14
+ */
15
+ // Todo: Would ideally have prompts, e.g., to ask for whether
16
+ // type was problem/layout, etc.
17
+
18
+ const [,, ruleName, ...options] = process.argv;
19
+ const recommended = options.includes('--recommended');
20
+ (async () => {
21
+ if (!ruleName) {
22
+ console.error('Please supply a rule name');
23
+ return;
24
+ }
25
+ if (/[A-Z]/v.test(ruleName)) {
26
+ console.error('Please ensure the rule has no capital letters');
27
+ return;
28
+ }
29
+ const ruleNamesPath = './test/rules/ruleNames.json';
30
+ const ruleNames = JSON.parse(await _promises.default.readFile(
31
+ // eslint-disable-next-line unicorn/prefer-json-parse-buffer -- TypeScript
32
+ ruleNamesPath, 'utf8'));
33
+ if (!ruleNames.includes(ruleName)) {
34
+ ruleNames.push(ruleName);
35
+ ruleNames.sort();
36
+ }
37
+ await _promises.default.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\n');
38
+ console.log('ruleNames', ruleNames);
39
+ const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc.js';
40
+
41
+ export default iterateJsdoc(({
42
+ context,
43
+ utils,
44
+ }) => {
45
+ // Rule here
46
+ }, {
47
+ iterateAllJsdocs: true,
48
+ meta: {
49
+ docs: {
50
+ description: '',
51
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/${ruleName}.md#repos-sticky-header',
52
+ },
53
+ schema: [
54
+ {
55
+ additionalProperties: false,
56
+ properties: {
57
+ // Option properties here (or remove the object)
58
+ },
59
+ type: 'object',
60
+ },
61
+ ],
62
+ type: 'suggestion',
63
+ },
64
+ });
65
+ `;
66
+ const camelCasedRuleName = (0, _camelcase.default)(ruleName);
67
+ const rulePath = `./src/rules/${camelCasedRuleName}.js`;
68
+ if (!(0, _nodeFs.existsSync)(rulePath)) {
69
+ await _promises.default.writeFile(rulePath, ruleTemplate);
70
+ }
71
+ const ruleTestTemplate = `export default {
72
+ invalid: [
73
+ {
74
+ code: \`
75
+ \`,
76
+ errors: [
77
+ {
78
+ line: 2,
79
+ message: '',
80
+ },
81
+ ],
82
+ },
83
+ ],
84
+ valid: [
85
+ {
86
+ code: \`
87
+ \`,
88
+ },
89
+ ],
90
+ };
91
+ `;
92
+ const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;
93
+ if (!(0, _nodeFs.existsSync)(ruleTestPath)) {
94
+ await _promises.default.writeFile(ruleTestPath, ruleTestTemplate);
95
+ }
96
+ const ruleReadmeTemplate = `# \`${ruleName}\`
97
+
98
+ ## Options
99
+
100
+ {"gitdown": "options"}
101
+
102
+ |||
103
+ |---|---|
104
+ |Context|everywhere|
105
+ |Tags|\`\`|
106
+ |Recommended|${recommended ? 'true' : 'false'}|
107
+ |Settings||
108
+ |Options||
109
+
110
+ ## Failing examples
111
+
112
+ <!-- assertions-failing ${camelCasedRuleName} -->
113
+
114
+ ## Passing examples
115
+
116
+ <!-- assertions-passing ${camelCasedRuleName} -->
117
+ `;
118
+ const ruleReadmePath = `./.README/rules/${ruleName}.md`;
119
+ if (!(0, _nodeFs.existsSync)(ruleReadmePath)) {
120
+ await _promises.default.writeFile(ruleReadmePath, ruleReadmeTemplate);
121
+ }
122
+
123
+ /**
124
+ * @param {object} cfg
125
+ * @param {string} cfg.path
126
+ * @param {RegExp} cfg.oldRegex
127
+ * @param {string} cfg.checkName
128
+ * @param {string} cfg.newLine
129
+ * @param {boolean} [cfg.oldIsCamel]
130
+ * @returns {Promise<void>}
131
+ */
132
+ const replaceInOrder = async ({
133
+ checkName,
134
+ newLine,
135
+ oldIsCamel,
136
+ oldRegex,
137
+ path
138
+ }) => {
139
+ /**
140
+ * @typedef {number} Integer
141
+ */
142
+ /**
143
+ * @typedef {{
144
+ * matchedLine: string,
145
+ * offset: Integer,
146
+ * oldRule: string,
147
+ * }} OffsetInfo
148
+ */
149
+ /**
150
+ * @type {OffsetInfo[]}
151
+ */
152
+ const offsets = [];
153
+ let readme = await _promises.default.readFile(path, 'utf8');
154
+ readme.replace(oldRegex,
155
+ /**
156
+ * @param {string} matchedLine
157
+ * @param {string} n1
158
+ * @param {Integer} offset
159
+ * @param {string} str
160
+ * @param {object} groups
161
+ * @param {string} groups.oldRule
162
+ * @returns {string}
163
+ */
164
+ (matchedLine, n1, offset, str, {
165
+ oldRule
166
+ }) => {
167
+ offsets.push({
168
+ matchedLine,
169
+ offset,
170
+ oldRule
171
+ });
172
+ return matchedLine;
173
+ });
174
+ offsets.sort(({
175
+ oldRule
176
+ }, {
177
+ oldRule: oldRuleB
178
+ }) => {
179
+ return oldRule < oldRuleB ? -1 : oldRule > oldRuleB ? 1 : 0;
180
+ });
181
+ let alreadyIncluded = false;
182
+ const itemIndex = offsets.findIndex(({
183
+ oldRule
184
+ }) => {
185
+ alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;
186
+ return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;
187
+ });
188
+ let item = itemIndex !== undefined && offsets[itemIndex];
189
+ if (item && itemIndex === 0 &&
190
+ // This property would not always be sufficient but in this case it is.
191
+ oldIsCamel) {
192
+ item.offset = 0;
193
+ }
194
+ if (!item) {
195
+ item = /** @type {OffsetInfo} */offsets.pop();
196
+ item.offset += item.matchedLine.length;
197
+ }
198
+ if (alreadyIncluded) {
199
+ console.log(`Rule name is already present in ${checkName}.`);
200
+ } else {
201
+ readme = readme.slice(0, item.offset) + (item.offset ? '\n' : '') + newLine + (item.offset ? '' : '\n') + readme.slice(item.offset);
202
+ await _promises.default.writeFile(path, readme);
203
+ }
204
+ };
205
+
206
+ // await replaceInOrder({
207
+ // checkName: 'README',
208
+ // newLine: `{"gitdown": "include", "file": "./rules/${ruleName}.md"}`,
209
+ // oldRegex: /\n\{"gitdown": "include", "file": ".\/rules\/(?<oldRule>[^.]*).md"\}/gv,
210
+ // path: './.README/README.md',
211
+ // });
212
+
213
+ await replaceInOrder({
214
+ checkName: 'index import',
215
+ newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}.js';`,
216
+ oldIsCamel: true,
217
+ oldRegex: /\nimport (?<oldRule>[^ ]*) from '.\/rules\/\1\.js';/gv,
218
+ path: './src/index-cjs.js'
219
+ });
220
+ await replaceInOrder({
221
+ checkName: 'index recommended',
222
+ newLine: `${' '.repeat(6)}'jsdoc/${ruleName}': ${recommended ? 'warnOrError' : '\'off\''},`,
223
+ oldRegex: /\n\s{6}'jsdoc\/(?<oldRule>[^']*)': .*?,/gv,
224
+ path: './src/index-cjs.js'
225
+ });
226
+ await replaceInOrder({
227
+ checkName: 'index rules',
228
+ newLine: `${' '.repeat(2)}'${ruleName}': ${camelCasedRuleName},`,
229
+ oldRegex: /\n\s{2}'(?<oldRule>[^']*)': [^,]*,/gv,
230
+ path: './src/index-cjs.js'
231
+ });
232
+ await Promise.resolve().then(() => _interopRequireWildcard(require('./buildEntryFileForTS.js')));
233
+ await Promise.resolve().then(() => _interopRequireWildcard(require('./generateDocs.js')));
234
+
235
+ /*
236
+ console.log('Paths to open for further editing\n');
237
+ console.log(`open ${ruleReadmePath}`);
238
+ console.log(`open ${rulePath}`);
239
+ console.log(`open ${ruleTestPath}\n`);
240
+ */
241
+
242
+ // Set chdir as somehow still in operation from other test
243
+ process.chdir((0, _nodePath.resolve)(__dirname, '../../'));
244
+ await (0, _openEditor.default)([
245
+ // Could even add editor line column numbers like `${rulePath}:1:1`
246
+ ruleReadmePath, ruleTestPath, rulePath]);
247
+ })();
248
+ //# sourceMappingURL=generateRule.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateRule.cjs","names":["_camelcase","_interopRequireDefault","require","_nodeFs","_promises","_nodePath","_openEditor","e","__esModule","default","_interopRequireWildcard","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","checkName","newLine","oldIsCamel","oldRegex","path","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","Promise","resolve","then","chdir","__dirname","open"],"sources":["../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n/**\n * @example\n * ```shell\n * pnpm run create-rule my-new-rule -- --recommended\n * ```\n */\n\nimport camelCase from 'camelcase';\nimport {\n existsSync,\n} from 'node:fs';\nimport fs from 'node:fs/promises';\nimport {\n resolve,\n} from 'node:path';\nimport open from 'open-editor';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether\n// type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/v).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n const ruleNames = JSON.parse(await fs.readFile(\n // eslint-disable-next-line unicorn/prefer-json-parse-buffer -- TypeScript\n ruleNamesPath, 'utf8',\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/${ruleName}.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: 2,\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `# \\`${ruleName}\\`\n\n## Options\n\n{\"gitdown\": \"options\"}\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n## Failing examples\n\n<!-- assertions-failing ${camelCasedRuleName} -->\n\n## Passing examples\n\n<!-- assertions-passing ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n /**\n * @param {object} cfg\n * @param {string} cfg.path\n * @param {RegExp} cfg.oldRegex\n * @param {string} cfg.checkName\n * @param {string} cfg.newLine\n * @param {boolean} [cfg.oldIsCamel]\n * @returns {Promise<void>}\n */\n const replaceInOrder = async ({\n checkName,\n newLine,\n oldIsCamel,\n oldRegex,\n path,\n }) => {\n /**\n * @typedef {number} Integer\n */\n /**\n * @typedef {{\n * matchedLine: string,\n * offset: Integer,\n * oldRule: string,\n * }} OffsetInfo\n */\n /**\n * @type {OffsetInfo[]}\n */\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n /**\n * @param {string} matchedLine\n * @param {string} n1\n * @param {Integer} offset\n * @param {string} str\n * @param {object} groups\n * @param {string} groups.oldRule\n * @returns {string}\n */\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n\n return matchedLine;\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = /** @type {OffsetInfo} */ (offsets.pop());\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n // await replaceInOrder({\n // checkName: 'README',\n // newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n // oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gv,\n // path: './.README/README.md',\n // });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}.js';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1\\.js';/gv,\n path: './src/index-cjs.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(6)}'jsdoc/${ruleName}': ${recommended ? 'warnOrError' : '\\'off\\''},`,\n oldRegex: /\\n\\s{6}'jsdoc\\/(?<oldRule>[^']*)': .*?,/gv,\n path: './src/index-cjs.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(2)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{2}'(?<oldRule>[^']*)': [^,]*,/gv,\n path: './src/index-cjs.js',\n });\n\n await import('./buildEntryFileForTS.js');\n\n await import('./generateDocs.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(import.meta.dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _index = _interopRequireDefault(require("../index.cjs"));
4
+ var _jsonSchemaToTypescript = require("json-schema-to-typescript");
5
+ var _promises = require("node:fs/promises");
6
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
+ let str = 'export interface Rules {\n';
8
+ for (const [ruleName, rule] of Object.entries(/** @type {Record<string, import('@eslint/core').RuleDefinition<import('@eslint/core').RuleDefinitionTypeOptions>>} */
9
+ _index.default.rules)) {
10
+ str += ` /** ${rule.meta?.docs?.description ?? ''} */\n`;
11
+ str += ` "jsdoc/${ruleName}": `;
12
+ const ts = await (0, _jsonSchemaToTypescript.compile)({
13
+ items: rule?.meta?.schema || [],
14
+ type: 'array'
15
+ }, 'Test', {
16
+ bannerComment: ''
17
+ });
18
+ str += ts.replace(/^export type Test = ?/v, '').replace(/^export interface Test /v, '').replaceAll('\n', '\n ').trimEnd().replace(/;$/v, '') + ';\n\n';
19
+ }
20
+ str = str.replace(/\n$/v, '') + '}\n';
21
+ await (0, _promises.writeFile)(__dirname + '/../rules.d.ts', str);
22
+
23
+ // console.log('str', str);
24
+ //# sourceMappingURL=generateRuleTypes.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateRuleTypes.cjs","names":["_index","_interopRequireDefault","require","_jsonSchemaToTypescript","_promises","e","__esModule","default","str","ruleName","rule","Object","entries","index","rules","meta","docs","description","ts","compile","items","schema","type","bannerComment","replace","replaceAll","trimEnd","writeFile","__dirname"],"sources":["../src/bin/generateRuleTypes.js"],"sourcesContent":["import index from '../index.js';\nimport {\n compile,\n} from 'json-schema-to-typescript';\nimport {\n writeFile,\n} from 'node:fs/promises';\n\nlet str = 'export interface Rules {\\n';\n\nfor (const [\n ruleName,\n rule,\n] of Object.entries(\n /** @type {Record<string, import('@eslint/core').RuleDefinition<import('@eslint/core').RuleDefinitionTypeOptions>>} */ (\n index.rules\n ),\n )\n) {\n str += ` /** ${rule.meta?.docs?.description ?? ''} */\\n`;\n str += ` \"jsdoc/${ruleName}\": `;\n const ts = await compile({\n items: rule?.meta?.schema || [],\n type: 'array',\n }, 'Test', {\n bannerComment: '',\n });\n\n str += ts\n .replace(/^export type Test = ?/v, '')\n .replace(/^export interface Test /v, '')\n .replaceAll('\\n', '\\n ').trimEnd().replace(/;$/v, '') +\n ';\\n\\n';\n}\n\nstr = str.replace(/\\n$/v, '') + '}\\n';\n\nawait writeFile(import.meta.dirname + '/../rules.d.ts', str);\n\n// console.log('str', str);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAF,OAAA;AAE0B,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B,IAAIG,GAAG,GAAG,4BAA4B;AAEtC,KAAK,MAAM,CACTC,QAAQ,EACRC,IAAI,CACL,IAAIC,MAAM,CAACC,OAAO,CACjB;AACIC,cAAK,CAACC,KAEV,CAAC,EACD;EACAN,GAAG,IAAI,SAASE,IAAI,CAACK,IAAI,EAAEC,IAAI,EAAEC,WAAW,IAAI,EAAE,OAAO;EACzDT,GAAG,IAAI,YAAYC,QAAQ,KAAK;EAChC,MAAMS,EAAE,GAAG,MAAM,IAAAC,+BAAO,EAAC;IACvBC,KAAK,EAAEV,IAAI,EAAEK,IAAI,EAAEM,MAAM,IAAI,EAAE;IAC/BC,IAAI,EAAE;EACR,CAAC,EAAE,MAAM,EAAE;IACTC,aAAa,EAAE;EACjB,CAAC,CAAC;EAEFf,GAAG,IAAIU,EAAE,CACNM,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CACrCA,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CACvCC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAACF,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GACpD,OAAO;AACb;AAEAhB,GAAG,GAAGA,GAAG,CAACgB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK;AAErC,MAAM,IAAAG,mBAAS,EAACC,SAAA,GAAsB,gBAAgB,EAAEpB,GAAG,CAAC;;AAE5D","ignoreList":[]}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * @typedef {Map<string, Map<string, (string|boolean)>>} TagStructure
9
+ */
10
+ /**
11
+ * @param {import('./jsdocUtils.js').ParserMode} mode
12
+ * @returns {TagStructure}
13
+ */
14
+ const getDefaultTagStructureForMode = mode => {
15
+ const isJsdoc = mode === 'jsdoc';
16
+ const isClosure = mode === 'closure';
17
+ const isTypescript = mode === 'typescript';
18
+ const isPermissive = mode === 'permissive';
19
+ const isJsdocOrPermissive = isJsdoc || isPermissive;
20
+ const isJsdocOrTypescript = isJsdoc || isTypescript;
21
+ const isTypescriptOrClosure = isTypescript || isClosure;
22
+ const isClosureOrPermissive = isClosure || isPermissive;
23
+ const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;
24
+
25
+ // Properties:
26
+ // `namepathRole` - 'namepath-referencing'|'name-defining'|'namepath-defining'|'namepath-or-url-referencing'|'text'|false
27
+ // `typeAllowed` - boolean
28
+ // `nameRequired` - boolean
29
+ // `typeRequired` - boolean
30
+ // `typeOrNameRequired` - boolean
31
+
32
+ // All of `typeAllowed` have a signature with "type" except for
33
+ // `augments`/`extends` ("namepath")
34
+ // `param`/`arg`/`argument` (no signature)
35
+ // `property`/`prop` (no signature)
36
+ // `modifies` (undocumented)
37
+
38
+ // None of the `namepathRole: 'namepath-defining'` show as having curly
39
+ // brackets for their name/namepath
40
+
41
+ // Among `namepath-defining` and `namepath-referencing`, these do not seem
42
+ // to allow curly brackets in their doc signature or examples (`modifies`
43
+ // references namepaths within its type brackets)
44
+
45
+ // Todo: Should support a `tutorialID` type (for `@tutorial` block and
46
+ // inline)
47
+
48
+ /**
49
+ * @type {TagStructure}
50
+ */
51
+ return new Map([['alias', new Map(/** @type {[string, string|boolean][]} */[
52
+ // Signature seems to require a "namepath" (and no counter-examples)
53
+ ['namepathRole', 'namepath-defining'],
54
+ // "namepath"
55
+ ['typeOrNameRequired', true]])], ['arg', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'],
56
+ // See `param`
57
+ ['nameRequired', true],
58
+ // Has no formal signature in the docs but shows curly brackets
59
+ // in the examples
60
+ ['typeAllowed', true]])], ['argument', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'],
61
+ // See `param`
62
+ ['nameRequired', true],
63
+ // Has no formal signature in the docs but shows curly brackets
64
+ // in the examples
65
+ ['typeAllowed', true]])], ['augments', new Map(/** @type {[string, string|boolean][]} */[
66
+ // Signature seems to require a "namepath" (and no counter-examples)
67
+ ['namepathRole', 'namepath-referencing'],
68
+ // Does not show curly brackets in either the signature or examples
69
+ ['typeAllowed', true],
70
+ // "namepath"
71
+ ['typeOrNameRequired', true]])], ['borrows', new Map(/** @type {[string, string|boolean][]} */[
72
+ // `borrows` has a different format, however, so needs special parsing;
73
+ // seems to require both, and as "namepath"'s
74
+ ['namepathRole', 'namepath-referencing'],
75
+ // "namepath"
76
+ ['typeOrNameRequired', true]])], ['callback', new Map(/** @type {[string, string|boolean][]} */[
77
+ // Seems to require a "namepath" in the signature (with no
78
+ // counter-examples); TypeScript does not enforce but seems
79
+ // problematic as not attached so presumably not useable without it
80
+ ['namepathRole', 'namepath-defining'],
81
+ // "namepath"
82
+ ['nameRequired', true]])], ['class', new Map(/** @type {[string, string|boolean][]} */[
83
+ // Not in use, but should be this value if using to power `empty-tags`
84
+ ['nameAllowed', true],
85
+ // Allows for "name"'s in signature, but indicated as optional
86
+ ['namepathRole', 'namepath-defining'], ['typeAllowed', true]])], ['const', new Map(/** @type {[string, string|boolean][]} */[
87
+ // Allows for "name"'s in signature, but indicated as optional
88
+ ['namepathRole', 'namepath-defining'], ['typeAllowed', true]])], ['constant', new Map(/** @type {[string, string|boolean][]} */[
89
+ // Allows for "name"'s in signature, but indicated as optional
90
+ ['namepathRole', 'namepath-defining'], ['typeAllowed', true]])], ['constructor', new Map(/** @type {[string, string|boolean][]} */[
91
+ // Allows for "name"'s in signature, but indicated as optional
92
+ ['namepathRole', 'namepath-defining'], ['typeAllowed', true]])], ['constructs', new Map(/** @type {[string, string|boolean][]} */[
93
+ // Allows for "name"'s in signature, but indicated as optional
94
+ ['namepathRole', 'namepath-defining'], ['nameRequired', false], ['typeAllowed', false]])], ['define', new Map(/** @type {[string, string|boolean][]} */[['typeRequired', isClosure]])], ['emits', new Map(/** @type {[string, string|boolean][]} */[
95
+ // Signature seems to require a "name" (of an event) and no counter-examples
96
+ ['namepathRole', 'namepath-referencing'], ['nameRequired', true], ['typeAllowed', false]])], ['enum', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'name-defining'],
97
+ // Has example showing curly brackets but not in doc signature
98
+ ['typeAllowed', true]])], ['event', new Map(/** @type {[string, string|boolean][]} */[
99
+ // Appears to require a "name" in its signature, albeit somewhat
100
+ // different from other "name"'s (including as described
101
+ // at https://jsdoc.app/about-namepaths.html )
102
+ ['namepathRole', 'namepath-defining'],
103
+ // The doc signature of `event` seems to require a "name"
104
+ ['nameRequired', true]])], ['exception', new Map(/** @type {[string, string|boolean][]} */[
105
+ // Shows curly brackets in the signature and in the examples
106
+ ['typeAllowed', true]])],
107
+ // Closure
108
+ ['export', new Map(/** @type {[string, string|boolean][]} */[['typeAllowed', isClosureOrPermissive]])], ['exports', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'], ['nameRequired', isJsdoc], ['typeAllowed', isClosureOrPermissive]])], ['extends', new Map(/** @type {[string, string|boolean][]} */[
109
+ // Signature seems to require a "namepath" (and no counter-examples)
110
+ ['namepathRole', 'namepath-referencing'], ['nameRequired', isJsdoc],
111
+ // Does not show curly brackets in either the signature or examples
112
+ ['typeAllowed', isTypescriptOrClosure || isPermissive],
113
+ // "namepath"
114
+ ['typeOrNameRequired', isTypescriptOrClosure || isPermissive]])], ['external', new Map(/** @type {[string, string|boolean][]} */[
115
+ // Appears to require a "name" in its signature, albeit somewhat
116
+ // different from other "name"'s (including as described
117
+ // at https://jsdoc.app/about-namepaths.html )
118
+ ['namepathRole', 'namepath-defining'],
119
+ // "name" (and a special syntax for the `external` name)
120
+ ['nameRequired', true], ['typeAllowed', false]])], ['fires', new Map(/** @type {[string, string|boolean][]} */[
121
+ // Signature seems to require a "name" (of an event) and no
122
+ // counter-examples
123
+ ['namepathRole', 'namepath-referencing'], ['nameRequired', true], ['typeAllowed', false]])], ['func', new Map(/** @type {[string, string|boolean][]} */[
124
+ // Allows for "name"'s in signature, but indicated as optional
125
+ ['namepathRole', 'namepath-defining']])], ['function', new Map(/** @type {[string, string|boolean][]} */[
126
+ // Allows for "name"'s in signature, but indicated as optional
127
+ ['namepathRole', 'namepath-defining'], ['nameRequired', false], ['typeAllowed', false]])], ['host', new Map(/** @type {[string, string|boolean][]} */[
128
+ // Appears to require a "name" in its signature, albeit somewhat
129
+ // different from other "name"'s (including as described
130
+ // at https://jsdoc.app/about-namepaths.html )
131
+ ['namepathRole', 'namepath-defining'],
132
+ // See `external`
133
+ ['nameRequired', true], ['typeAllowed', false]])], ['implements', new Map(/** @type {[string, string|boolean][]} */[
134
+ // Shows curly brackets in the doc signature and examples
135
+ // "typeExpression"
136
+ ['typeRequired', true]])], ['interface', new Map(/** @type {[string, string|boolean][]} */[
137
+ // Not in use, but should be this value if using to power `empty-tags`
138
+ ['nameAllowed', isClosure],
139
+ // Allows for "name" in signature, but indicates as optional
140
+ ['namepathRole', isJsdocTypescriptOrPermissive ? 'namepath-defining' : false], ['typeAllowed', false]])], ['internal', new Map(/** @type {[string, string|boolean][]} */[
141
+ // Not in use, but should be this value if using to power `empty-tags`
142
+ ['nameAllowed', false],
143
+ // https://www.typescriptlang.org/tsconfig/#stripInternal
144
+ ['namepathRole', false]])], ['lends', new Map(/** @type {[string, string|boolean][]} */[
145
+ // Signature seems to require a "namepath" (and no counter-examples)
146
+ ['namepathRole', 'namepath-referencing'],
147
+ // "namepath"
148
+ ['typeOrNameRequired', true]])], ['link', new Map(/** @type {[string, string|boolean][]} */[
149
+ // Signature seems to require a namepath OR URL and might be checked as such.
150
+ ['namepathRole', 'namepath-or-url-referencing']])], ['linkcode', new Map(/** @type {[string, string|boolean][]} */[
151
+ // Synonym for "link"
152
+ // Signature seems to require a namepath OR URL and might be checked as such.
153
+ ['namepathRole', 'namepath-or-url-referencing']])], ['linkplain', new Map(/** @type {[string, string|boolean][]} */[
154
+ // Synonym for "link"
155
+ // Signature seems to require a namepath OR URL and might be checked as such.
156
+ ['namepathRole', 'namepath-or-url-referencing']])], ['listens', new Map(/** @type {[string, string|boolean][]} */[
157
+ // Signature seems to require a "name" (of an event) and no
158
+ // counter-examples
159
+ ['namepathRole', 'namepath-referencing'], ['nameRequired', true], ['typeAllowed', false]])], ['member', new Map(/** @type {[string, string|boolean][]} */[
160
+ // Allows for "name"'s in signature, but indicated as optional
161
+ ['namepathRole', 'namepath-defining'],
162
+ // Has example showing curly brackets but not in doc signature
163
+ ['typeAllowed', true]])], ['memberof!', new Map(/** @type {[string, string|boolean][]} */[
164
+ // Signature seems to require a "namepath" (and no counter-examples),
165
+ // though it allows an incomplete namepath ending with connecting symbol
166
+ ['namepathRole', 'namepath-referencing'],
167
+ // "namepath"
168
+ ['typeOrNameRequired', true]])], ['memberof', new Map(/** @type {[string, string|boolean][]} */[
169
+ // Signature seems to require a "namepath" (and no counter-examples),
170
+ // though it allows an incomplete namepath ending with connecting symbol
171
+ ['namepathRole', 'namepath-referencing'],
172
+ // "namepath"
173
+ ['typeOrNameRequired', true]])], ['method', new Map(/** @type {[string, string|boolean][]} */[
174
+ // Allows for "name"'s in signature, but indicated as optional
175
+ ['namepathRole', 'namepath-defining']])], ['mixes', new Map(/** @type {[string, string|boolean][]} */[
176
+ // Signature seems to require a "OtherObjectPath" with no
177
+ // counter-examples
178
+ ['namepathRole', 'namepath-referencing'],
179
+ // "OtherObjectPath"
180
+ ['typeOrNameRequired', true]])], ['mixin', new Map(/** @type {[string, string|boolean][]} */[
181
+ // Allows for "name"'s in signature, but indicated as optional
182
+ ['namepathRole', 'namepath-defining'], ['nameRequired', false], ['typeAllowed', false]])], ['modifies', new Map(/** @type {[string, string|boolean][]} */[
183
+ // Has no documentation, but test example has curly brackets, and
184
+ // "name" would be suggested rather than "namepath" based on example;
185
+ // not sure if name is required
186
+ ['typeAllowed', true]])], ['module', new Map(/** @type {[string, string|boolean][]} */[
187
+ // Optional "name" and no curly brackets
188
+ // this block impacts `no-undefined-types` and `valid-types` (search for
189
+ // "isNameOrNamepathDefiningTag|tagMightHaveNameOrNamepath|tagMightHaveEitherTypeOrNamePosition")
190
+ ['namepathRole', isJsdoc ? 'namepath-defining' : 'text'],
191
+ // Shows the signature with curly brackets but not in the example
192
+ ['typeAllowed', true]])], ['name', new Map(/** @type {[string, string|boolean][]} */[
193
+ // Seems to require a "namepath" in the signature (with no
194
+ // counter-examples)
195
+ ['namepathRole', 'namepath-defining'],
196
+ // "namepath"
197
+ ['nameRequired', true],
198
+ // "namepath"
199
+ ['typeOrNameRequired', true]])], ['namespace', new Map(/** @type {[string, string|boolean][]} */[
200
+ // Allows for "name"'s in signature, but indicated as optional
201
+ ['namepathRole', 'namepath-defining'],
202
+ // Shows the signature with curly brackets but not in the example
203
+ ['typeAllowed', true]])], ['package', new Map(/** @type {[string, string|boolean][]} */[
204
+ // Shows the signature with curly brackets but not in the example
205
+ // "typeExpression"
206
+ ['typeAllowed', isClosureOrPermissive]])], ['param', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'],
207
+ // Though no signature provided requiring, per
208
+ // https://jsdoc.app/tags-param.html:
209
+ // "The @param tag requires you to specify the name of the parameter you
210
+ // are documenting."
211
+ ['nameRequired', true],
212
+ // Has no formal signature in the docs but shows curly brackets
213
+ // in the examples
214
+ ['typeAllowed', true]])], ['private', new Map(/** @type {[string, string|boolean][]} */[
215
+ // Shows the signature with curly brackets but not in the example
216
+ // "typeExpression"
217
+ ['typeAllowed', isClosureOrPermissive]])], ['prop', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'],
218
+ // See `property`
219
+ ['nameRequired', true],
220
+ // Has no formal signature in the docs but shows curly brackets
221
+ // in the examples
222
+ ['typeAllowed', true]])], ['property', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', 'namepath-defining'],
223
+ // No docs indicate required, but since parallel to `param`, we treat as
224
+ // such:
225
+ ['nameRequired', true],
226
+ // Has no formal signature in the docs but shows curly brackets
227
+ // in the examples
228
+ ['typeAllowed', true]])], ['protected', new Map(/** @type {[string, string|boolean][]} */[
229
+ // Shows the signature with curly brackets but not in the example
230
+ // "typeExpression"
231
+ ['typeAllowed', isClosureOrPermissive]])], ['public', new Map(/** @type {[string, string|boolean][]} */[
232
+ // Does not show a signature nor show curly brackets in the example
233
+ ['typeAllowed', isClosureOrPermissive]])], ['requires', new Map(/** @type {[string, string|boolean][]} */[
234
+ // <someModuleName>
235
+ ['namepathRole', 'namepath-referencing'], ['nameRequired', true], ['typeAllowed', false]])], ['return', new Map(/** @type {[string, string|boolean][]} */[
236
+ // Shows curly brackets in the signature and in the examples
237
+ ['typeAllowed', true]])], ['returns', new Map(/** @type {[string, string|boolean][]} */[
238
+ // Shows curly brackets in the signature and in the examples
239
+ ['typeAllowed', true]])], ['satisfies', new Map(/** @type {[string, string|boolean][]} */[
240
+ // Shows curly brackets in the doc signature and examples
241
+ ['typeRequired', true]])], ['see', new Map(/** @type {[string, string|boolean][]} */[
242
+ // Signature allows for "namepath" or text, so user must configure to
243
+ // 'namepath-referencing' to enforce checks
244
+ ['namepathRole', 'text']])], ['static', new Map(/** @type {[string, string|boolean][]} */[
245
+ // Does not show a signature nor show curly brackets in the example
246
+ ['typeAllowed', isClosureOrPermissive]])], ['suppress', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', !isClosure], ['typeRequired', isClosure]])], ['template', new Map(/** @type {[string, string|boolean][]} */[['namepathRole', isJsdoc ? 'text' : 'namepath-referencing'], ['nameRequired', !isJsdoc],
247
+ // Though defines `namepathRole: 'namepath-defining'` in a sense, it is
248
+ // not parseable in the same way for template (e.g., allowing commas),
249
+ // so not adding
250
+ ['typeAllowed', isTypescriptOrClosure || isPermissive]])], ['this', new Map(/** @type {[string, string|boolean][]} */[
251
+ // Signature seems to require a "namepath" (and no counter-examples)
252
+ // Not used with namepath in Closure/TypeScript, however
253
+ ['namepathRole', isJsdoc ? 'namepath-referencing' : false],
254
+ // namepath
255
+ ['typeOrNameRequired', isJsdoc], ['typeRequired', isTypescriptOrClosure]])], ['throws', new Map(/** @type {[string, string|boolean][]} */[
256
+ // Shows curly brackets in the signature and in the examples
257
+ ['typeAllowed', true]])], ['tutorial', new Map(/** @type {[string, string|boolean][]} */[
258
+ // (a tutorial ID)
259
+ ['nameRequired', true], ['typeAllowed', false]])], ['type', new Map(/** @type {[string, string|boolean][]} */[
260
+ // Shows curly brackets in the doc signature and examples
261
+ // "typeName"
262
+ ['typeRequired', true]])], ['typedef', new Map(/** @type {[string, string|boolean][]} */[
263
+ // Seems to require a "namepath" in the signature (with no
264
+ // counter-examples)
265
+ ['namepathRole', 'name-defining'],
266
+ // TypeScript may allow it to be dropped if followed by @property or @member;
267
+ // also shown as missing in Closure
268
+ // "namepath"
269
+ ['nameRequired', isJsdocOrPermissive],
270
+ // Is not `typeRequired` for TypeScript because it gives an error:
271
+ // JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.
272
+
273
+ // Has example showing curly brackets but not in doc signature
274
+ ['typeAllowed', true],
275
+ // TypeScript may allow it to be dropped if followed by @property or @member
276
+ // "namepath"
277
+ ['typeOrNameRequired', !isTypescript]])], ['var', new Map(/** @type {[string, string|boolean][]} */[
278
+ // Allows for "name"'s in signature, but indicated as optional
279
+ ['namepathRole', 'namepath-defining'],
280
+ // Has example showing curly brackets but not in doc signature
281
+ ['typeAllowed', true]])], ['yield', new Map(/** @type {[string, string|boolean][]} */[
282
+ // Shows curly brackets in the signature and in the examples
283
+ ['typeAllowed', true]])], ['yields', new Map(/** @type {[string, string|boolean][]} */[
284
+ // Shows curly brackets in the signature and in the examples
285
+ ['typeAllowed', true]])]]);
286
+ };
287
+ var _default = exports.default = getDefaultTagStructureForMode;
288
+ module.exports = exports.default;
289
+ //# sourceMappingURL=getDefaultTagStructureForMode.cjs.map