@depup/eslint-plugin-jsdoc 63.3.2-depup.1 → 64.0.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 (272) hide show
  1. package/README.md +3 -11
  2. package/changes.json +3 -16
  3. package/dist/index.d.ts +7 -4
  4. package/package.json +29 -67
  5. package/src/index.js +7 -8
  6. package/dist/WarnSettings.cjs +0 -38
  7. package/dist/WarnSettings.cjs.map +0 -1
  8. package/dist/alignTransform.cjs +0 -402
  9. package/dist/alignTransform.cjs.map +0 -1
  10. package/dist/buildForbidRuleDefinition.cjs +0 -101
  11. package/dist/buildForbidRuleDefinition.cjs.map +0 -1
  12. package/dist/buildRejectOrPreferRuleDefinition.cjs +0 -352
  13. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +0 -1
  14. package/dist/cjs/WarnSettings.d.ts +0 -16
  15. package/dist/cjs/alignTransform.d.ts +0 -33
  16. package/dist/cjs/buildForbidRuleDefinition.d.ts +0 -14
  17. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +0 -8
  18. package/dist/cjs/defaultTagOrder.d.ts +0 -4
  19. package/dist/cjs/exportParser.d.ts +0 -40
  20. package/dist/cjs/getDefaultTagStructureForMode.d.ts +0 -10
  21. package/dist/cjs/getJsdocProcessorPlugin.d.cts +0 -5
  22. package/dist/cjs/getJsdocProcessorPlugin.d.ts +0 -66
  23. package/dist/cjs/index-cjs.d.ts +0 -23
  24. package/dist/cjs/index.cjs.d.cts +0 -2
  25. package/dist/cjs/iterateJsdoc.d.cts +0 -7
  26. package/dist/cjs/iterateJsdoc.d.ts +0 -495
  27. package/dist/cjs/jsdocUtils.d.ts +0 -500
  28. package/dist/cjs/rules/checkAccess.d.ts +0 -2
  29. package/dist/cjs/rules/checkAlignment.d.ts +0 -2
  30. package/dist/cjs/rules/checkExamples.d.ts +0 -3
  31. package/dist/cjs/rules/checkIndentation.d.ts +0 -2
  32. package/dist/cjs/rules/checkLineAlignment.d.ts +0 -9
  33. package/dist/cjs/rules/checkParamNames.d.ts +0 -2
  34. package/dist/cjs/rules/checkPropertyNames.d.ts +0 -2
  35. package/dist/cjs/rules/checkSyntax.d.ts +0 -2
  36. package/dist/cjs/rules/checkTagNames.d.ts +0 -2
  37. package/dist/cjs/rules/checkTemplateNames.d.ts +0 -2
  38. package/dist/cjs/rules/checkTypes.d.ts +0 -7
  39. package/dist/cjs/rules/checkValues.d.ts +0 -2
  40. package/dist/cjs/rules/convertToJsdocComments.d.ts +0 -266
  41. package/dist/cjs/rules/emptyTags.d.ts +0 -2
  42. package/dist/cjs/rules/escapeInlineTags.d.ts +0 -2
  43. package/dist/cjs/rules/implementsOnClasses.d.ts +0 -2
  44. package/dist/cjs/rules/importsAsDependencies.d.ts +0 -2
  45. package/dist/cjs/rules/informativeDocs.d.ts +0 -2
  46. package/dist/cjs/rules/linesBeforeBlock.d.ts +0 -2
  47. package/dist/cjs/rules/matchDescription.d.ts +0 -2
  48. package/dist/cjs/rules/matchName.d.ts +0 -2
  49. package/dist/cjs/rules/multilineBlocks.d.ts +0 -2
  50. package/dist/cjs/rules/noBadBlocks.d.ts +0 -2
  51. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +0 -2
  52. package/dist/cjs/rules/noBlankBlocks.d.ts +0 -2
  53. package/dist/cjs/rules/noDefaults.d.ts +0 -2
  54. package/dist/cjs/rules/noMissingSyntax.d.ts +0 -9
  55. package/dist/cjs/rules/noMultiAsterisks.d.ts +0 -2
  56. package/dist/cjs/rules/noRestrictedSyntax.d.ts +0 -2
  57. package/dist/cjs/rules/noTypes.d.ts +0 -2
  58. package/dist/cjs/rules/noUndefinedTypes.d.ts +0 -2
  59. package/dist/cjs/rules/normalizeSeeLinks.d.ts +0 -2
  60. package/dist/cjs/rules/preferImportTag.d.ts +0 -2
  61. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +0 -2
  62. package/dist/cjs/rules/requireDescription.d.ts +0 -2
  63. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +0 -2
  64. package/dist/cjs/rules/requireExample.d.ts +0 -2
  65. package/dist/cjs/rules/requireFileOverview.d.ts +0 -2
  66. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +0 -2
  67. package/dist/cjs/rules/requireJsdoc.d.ts +0 -24
  68. package/dist/cjs/rules/requireParam.d.ts +0 -3
  69. package/dist/cjs/rules/requireParamDescription.d.ts +0 -2
  70. package/dist/cjs/rules/requireParamName.d.ts +0 -2
  71. package/dist/cjs/rules/requireParamType.d.ts +0 -2
  72. package/dist/cjs/rules/requireProperty.d.ts +0 -2
  73. package/dist/cjs/rules/requirePropertyDescription.d.ts +0 -2
  74. package/dist/cjs/rules/requirePropertyName.d.ts +0 -2
  75. package/dist/cjs/rules/requirePropertyType.d.ts +0 -2
  76. package/dist/cjs/rules/requireRejects.d.ts +0 -2
  77. package/dist/cjs/rules/requireReturns.d.ts +0 -2
  78. package/dist/cjs/rules/requireReturnsCheck.d.ts +0 -2
  79. package/dist/cjs/rules/requireReturnsDescription.d.ts +0 -2
  80. package/dist/cjs/rules/requireReturnsType.d.ts +0 -2
  81. package/dist/cjs/rules/requireTags.d.ts +0 -2
  82. package/dist/cjs/rules/requireTemplate.d.ts +0 -2
  83. package/dist/cjs/rules/requireThrows.d.ts +0 -2
  84. package/dist/cjs/rules/requireYields.d.ts +0 -2
  85. package/dist/cjs/rules/requireYieldsCheck.d.ts +0 -2
  86. package/dist/cjs/rules/sortTags.d.ts +0 -2
  87. package/dist/cjs/rules/tagLines.d.ts +0 -2
  88. package/dist/cjs/rules/textEscaping.d.ts +0 -2
  89. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +0 -2
  90. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +0 -2
  91. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +0 -2
  92. package/dist/cjs/rules/tsPreferFunctionType.d.ts +0 -2
  93. package/dist/cjs/rules/typeFormatting.d.ts +0 -2
  94. package/dist/cjs/rules/validTypes.d.ts +0 -2
  95. package/dist/cjs/tagNames.d.ts +0 -15
  96. package/dist/cjs/utils/hasReturnValue.d.ts +0 -19
  97. package/dist/defaultTagOrder.cjs +0 -46
  98. package/dist/defaultTagOrder.cjs.map +0 -1
  99. package/dist/exportParser.cjs +0 -732
  100. package/dist/exportParser.cjs.map +0 -1
  101. package/dist/generateDocs.cjs +0 -342
  102. package/dist/generateDocs.cjs.map +0 -1
  103. package/dist/generateOptions.cjs +0 -62
  104. package/dist/generateOptions.cjs.map +0 -1
  105. package/dist/generateRule.cjs +0 -248
  106. package/dist/generateRule.cjs.map +0 -1
  107. package/dist/generateRuleTypes.cjs +0 -24
  108. package/dist/generateRuleTypes.cjs.map +0 -1
  109. package/dist/getDefaultTagStructureForMode.cjs +0 -289
  110. package/dist/getDefaultTagStructureForMode.cjs.map +0 -1
  111. package/dist/getJsdocProcessorPlugin.cjs +0 -587
  112. package/dist/getJsdocProcessorPlugin.cjs.map +0 -1
  113. package/dist/getJsdocProcessorPlugin.cts +0 -5
  114. package/dist/index-cjs.cjs +0 -598
  115. package/dist/index-cjs.cjs.map +0 -1
  116. package/dist/index-cjs.d.ts +0 -24
  117. package/dist/index-esm.cjs +0 -162
  118. package/dist/index-esm.cjs.map +0 -1
  119. package/dist/index-esm.d.ts +0 -72
  120. package/dist/index.cjs +0 -746
  121. package/dist/index.cjs.cts +0 -3
  122. package/dist/index.cjs.map +0 -1
  123. package/dist/iterateJsdoc.cjs +0 -2150
  124. package/dist/iterateJsdoc.cjs.map +0 -1
  125. package/dist/iterateJsdoc.cts +0 -7
  126. package/dist/jsdocUtils.cjs +0 -1786
  127. package/dist/jsdocUtils.cjs.map +0 -1
  128. package/dist/rules/checkAccess.cjs +0 -40
  129. package/dist/rules/checkAccess.cjs.map +0 -1
  130. package/dist/rules/checkAlignment.cjs +0 -78
  131. package/dist/rules/checkAlignment.cjs.map +0 -1
  132. package/dist/rules/checkExamples.cjs +0 -521
  133. package/dist/rules/checkExamples.cjs.map +0 -1
  134. package/dist/rules/checkIndentation.cjs +0 -170
  135. package/dist/rules/checkIndentation.cjs.map +0 -1
  136. package/dist/rules/checkLineAlignment.cjs +0 -398
  137. package/dist/rules/checkLineAlignment.cjs.map +0 -1
  138. package/dist/rules/checkParamNames.cjs +0 -407
  139. package/dist/rules/checkParamNames.cjs.map +0 -1
  140. package/dist/rules/checkPropertyNames.cjs +0 -135
  141. package/dist/rules/checkPropertyNames.cjs.map +0 -1
  142. package/dist/rules/checkSyntax.cjs +0 -38
  143. package/dist/rules/checkSyntax.cjs.map +0 -1
  144. package/dist/rules/checkTagNames.cjs +0 -312
  145. package/dist/rules/checkTagNames.cjs.map +0 -1
  146. package/dist/rules/checkTemplateNames.cjs +0 -192
  147. package/dist/rules/checkTemplateNames.cjs.map +0 -1
  148. package/dist/rules/checkTypes.cjs +0 -111
  149. package/dist/rules/checkTypes.cjs.map +0 -1
  150. package/dist/rules/checkValues.cjs +0 -166
  151. package/dist/rules/checkValues.cjs.map +0 -1
  152. package/dist/rules/convertToJsdocComments.cjs +0 -356
  153. package/dist/rules/convertToJsdocComments.cjs.map +0 -1
  154. package/dist/rules/emptyTags.cjs +0 -98
  155. package/dist/rules/emptyTags.cjs.map +0 -1
  156. package/dist/rules/escapeInlineTags.cjs +0 -234
  157. package/dist/rules/escapeInlineTags.cjs.map +0 -1
  158. package/dist/rules/implementsOnClasses.cjs +0 -74
  159. package/dist/rules/implementsOnClasses.cjs.map +0 -1
  160. package/dist/rules/importsAsDependencies.cjs +0 -104
  161. package/dist/rules/importsAsDependencies.cjs.map +0 -1
  162. package/dist/rules/informativeDocs.cjs +0 -187
  163. package/dist/rules/informativeDocs.cjs.map +0 -1
  164. package/dist/rules/linesBeforeBlock.cjs +0 -120
  165. package/dist/rules/linesBeforeBlock.cjs.map +0 -1
  166. package/dist/rules/matchDescription.cjs +0 -356
  167. package/dist/rules/matchDescription.cjs.map +0 -1
  168. package/dist/rules/matchName.cjs +0 -160
  169. package/dist/rules/matchName.cjs.map +0 -1
  170. package/dist/rules/multilineBlocks.cjs +0 -431
  171. package/dist/rules/multilineBlocks.cjs.map +0 -1
  172. package/dist/rules/noBadBlocks.cjs +0 -100
  173. package/dist/rules/noBadBlocks.cjs.map +0 -1
  174. package/dist/rules/noBlankBlockDescriptions.cjs +0 -63
  175. package/dist/rules/noBlankBlockDescriptions.cjs.map +0 -1
  176. package/dist/rules/noBlankBlocks.cjs +0 -54
  177. package/dist/rules/noBlankBlocks.cjs.map +0 -1
  178. package/dist/rules/noDefaults.cjs +0 -102
  179. package/dist/rules/noDefaults.cjs.map +0 -1
  180. package/dist/rules/noMissingSyntax.cjs +0 -196
  181. package/dist/rules/noMissingSyntax.cjs.map +0 -1
  182. package/dist/rules/noMultiAsterisks.cjs +0 -126
  183. package/dist/rules/noMultiAsterisks.cjs.map +0 -1
  184. package/dist/rules/noRestrictedSyntax.cjs +0 -68
  185. package/dist/rules/noRestrictedSyntax.cjs.map +0 -1
  186. package/dist/rules/noTypes.cjs +0 -101
  187. package/dist/rules/noTypes.cjs.map +0 -1
  188. package/dist/rules/noUndefinedTypes.cjs +0 -616
  189. package/dist/rules/noUndefinedTypes.cjs.map +0 -1
  190. package/dist/rules/normalizeSeeLinks.cjs +0 -271
  191. package/dist/rules/normalizeSeeLinks.cjs.map +0 -1
  192. package/dist/rules/preferImportTag.cjs +0 -362
  193. package/dist/rules/preferImportTag.cjs.map +0 -1
  194. package/dist/rules/requireAsteriskPrefix.cjs +0 -190
  195. package/dist/rules/requireAsteriskPrefix.cjs.map +0 -1
  196. package/dist/rules/requireDescription.cjs +0 -164
  197. package/dist/rules/requireDescription.cjs.map +0 -1
  198. package/dist/rules/requireDescriptionCompleteSentence.cjs +0 -321
  199. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +0 -1
  200. package/dist/rules/requireExample.cjs +0 -136
  201. package/dist/rules/requireExample.cjs.map +0 -1
  202. package/dist/rules/requireFileOverview.cjs +0 -194
  203. package/dist/rules/requireFileOverview.cjs.map +0 -1
  204. package/dist/rules/requireHyphenBeforeParamDescription.cjs +0 -166
  205. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +0 -1
  206. package/dist/rules/requireJsdoc.cjs +0 -721
  207. package/dist/rules/requireJsdoc.cjs.map +0 -1
  208. package/dist/rules/requireParam.cjs +0 -772
  209. package/dist/rules/requireParam.cjs.map +0 -1
  210. package/dist/rules/requireParamDescription.cjs +0 -105
  211. package/dist/rules/requireParamDescription.cjs.map +0 -1
  212. package/dist/rules/requireParamName.cjs +0 -68
  213. package/dist/rules/requireParamName.cjs.map +0 -1
  214. package/dist/rules/requireParamType.cjs +0 -104
  215. package/dist/rules/requireParamType.cjs.map +0 -1
  216. package/dist/rules/requireProperty.cjs +0 -63
  217. package/dist/rules/requireProperty.cjs.map +0 -1
  218. package/dist/rules/requirePropertyDescription.cjs +0 -29
  219. package/dist/rules/requirePropertyDescription.cjs.map +0 -1
  220. package/dist/rules/requirePropertyName.cjs +0 -29
  221. package/dist/rules/requirePropertyName.cjs.map +0 -1
  222. package/dist/rules/requirePropertyType.cjs +0 -29
  223. package/dist/rules/requirePropertyType.cjs.map +0 -1
  224. package/dist/rules/requireRejects.cjs +0 -226
  225. package/dist/rules/requireRejects.cjs.map +0 -1
  226. package/dist/rules/requireReturns.cjs +0 -262
  227. package/dist/rules/requireReturns.cjs.map +0 -1
  228. package/dist/rules/requireReturnsCheck.cjs +0 -225
  229. package/dist/rules/requireReturnsCheck.cjs.map +0 -1
  230. package/dist/rules/requireReturnsDescription.cjs +0 -72
  231. package/dist/rules/requireReturnsDescription.cjs.map +0 -1
  232. package/dist/rules/requireReturnsType.cjs +0 -68
  233. package/dist/rules/requireReturnsType.cjs.map +0 -1
  234. package/dist/rules/requireTags.cjs +0 -74
  235. package/dist/rules/requireTags.cjs.map +0 -1
  236. package/dist/rules/requireTemplate.cjs +0 -220
  237. package/dist/rules/requireTemplate.cjs.map +0 -1
  238. package/dist/rules/requireThrows.cjs +0 -118
  239. package/dist/rules/requireThrows.cjs.map +0 -1
  240. package/dist/rules/requireYields.cjs +0 -224
  241. package/dist/rules/requireYields.cjs.map +0 -1
  242. package/dist/rules/requireYieldsCheck.cjs +0 -179
  243. package/dist/rules/requireYieldsCheck.cjs.map +0 -1
  244. package/dist/rules/sortTags.cjs +0 -656
  245. package/dist/rules/sortTags.cjs.map +0 -1
  246. package/dist/rules/tagLines.cjs +0 -374
  247. package/dist/rules/tagLines.cjs.map +0 -1
  248. package/dist/rules/textEscaping.cjs +0 -141
  249. package/dist/rules/textEscaping.cjs.map +0 -1
  250. package/dist/rules/tsMethodSignatureStyle.cjs +0 -240
  251. package/dist/rules/tsMethodSignatureStyle.cjs.map +0 -1
  252. package/dist/rules/tsNoEmptyObjectType.cjs +0 -62
  253. package/dist/rules/tsNoEmptyObjectType.cjs.map +0 -1
  254. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +0 -104
  255. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +0 -1
  256. package/dist/rules/tsPreferFunctionType.cjs +0 -110
  257. package/dist/rules/tsPreferFunctionType.cjs.map +0 -1
  258. package/dist/rules/typeFormatting.cjs +0 -607
  259. package/dist/rules/typeFormatting.cjs.map +0 -1
  260. package/dist/rules/validTypes.cjs +0 -324
  261. package/dist/rules/validTypes.cjs.map +0 -1
  262. package/dist/tagNames.cjs +0 -244
  263. package/dist/tagNames.cjs.map +0 -1
  264. package/dist/to-valid-identifier.cjs +0 -263
  265. package/dist/utils/hasReturnValue.cjs +0 -495
  266. package/dist/utils/hasReturnValue.cjs.map +0 -1
  267. package/rollup.config.js +0 -16
  268. package/src/getJsdocProcessorPlugin.cts +0 -5
  269. package/src/index-cjs.js +0 -758
  270. package/src/index-esm.js +0 -196
  271. package/src/index.cjs.cts +0 -3
  272. package/src/iterateJsdoc.cts +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsdocUtils.cjs","names":["getDefaultTagStructureForMode","WarnSettings","closureTags","jsdocTags","typeScriptTags","tryParse","parseComment","stringify"],"sources":["../src/jsdocUtils.js"],"sourcesContent":["import getDefaultTagStructureForMode from './getDefaultTagStructureForMode.js';\nimport {\n closureTags,\n jsdocTags,\n typeScriptTags,\n} from './tagNames.js';\nimport WarnSettings from './WarnSettings.js';\nimport {\n parseComment,\n stringify,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {number} Integer\n */\n/**\n * @typedef {import('./utils/hasReturnValue.js').ESTreeOrTypeScriptNode} ESTreeOrTypeScriptNode\n */\n\n/**\n * @typedef {\"jsdoc\"|\"typescript\"|\"closure\"|\"permissive\"} ParserMode\n */\n\n/**\n * @type {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nlet tagStructure;\n\n/**\n * @param {ParserMode} mode\n * @returns {void}\n */\nconst setTagStructure = (mode) => {\n tagStructure = getDefaultTagStructureForMode(mode);\n};\n\n/**\n * @typedef {undefined|string|{\n * name: Integer,\n * restElement: boolean\n * }|{\n * isRestProperty: boolean|undefined,\n * name: string,\n * restElement: boolean\n * }|{\n * name: string,\n * restElement: boolean\n * }} ParamCommon\n */\n/**\n * @typedef {ParamCommon|[string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string,\n * })]|NestedParamInfo} ParamNameInfo\n */\n\n/**\n * @typedef {{\n * hasPropertyRest: boolean,\n * hasRestElement: boolean,\n * names: string[],\n * rests: boolean[],\n * }} FlattendRootInfo\n */\n/**\n * @typedef {[string, (string[]|ParamInfo[])]} NestedParamInfo\n */\n/**\n * @typedef {ParamCommon|\n * [string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string\n * })]|\n * NestedParamInfo} ParamInfo\n */\n\n/**\n * Given a nested array of property names, reduce them to a single array,\n * appending the name of the root element along the way if present.\n * @callback FlattenRoots\n * @param {ParamInfo[]} params\n * @param {string} [root]\n * @returns {FlattendRootInfo}\n */\n\n/** @type {FlattenRoots} */\nconst flattenRoots = (params, root = '') => {\n let hasRestElement = false;\n let hasPropertyRest = false;\n\n /**\n * @type {boolean[]}\n */\n const rests = [];\n\n const names = params.reduce(\n /**\n * @param {string[]} acc\n * @param {ParamInfo} cur\n * @returns {string[]}\n */\n (acc, cur) => {\n if (Array.isArray(cur)) {\n let nms;\n if (Array.isArray(cur[1])) {\n nms = cur[1];\n } else {\n if (cur[1].hasRestElement) {\n hasRestElement = true;\n }\n\n if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n nms = cur[1].names;\n }\n\n const flattened = flattenRoots(nms, root ? `${root}.${cur[0]}` : cur[0]);\n if (flattened.hasRestElement) {\n hasRestElement = true;\n }\n\n if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n const inner = /** @type {string[]} */ ([\n root ? `${root}.${cur[0]}` : cur[0],\n ...flattened.names,\n ].filter(Boolean));\n rests.push(false, ...flattened.rests);\n\n return acc.concat(inner);\n }\n\n if (typeof cur === 'object') {\n if ('isRestProperty' in cur && cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n\n if ('restElement' in cur && cur.restElement) {\n hasRestElement = true;\n }\n\n acc.push(root ? `${root}.${String(cur.name)}` : String(cur.name));\n } else if (typeof cur !== 'undefined') {\n rests.push(false);\n acc.push(root ? `${root}.${cur}` : cur);\n }\n\n return acc;\n }, [],\n );\n\n return {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n };\n};\n\n/**\n * @param {import('@typescript-eslint/types').TSESTree.TSIndexSignature|\n * import('@typescript-eslint/types').TSESTree.TSConstructSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSCallSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSPropertySignature} propSignature\n * @returns {undefined|string|[string, string[]]}\n */\nconst getPropertiesFromPropertySignature = (propSignature) => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name,\n propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return /** @type {string} */ (\n getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n member\n ),\n )\n );\n }),\n ];\n }\n\n return /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name;\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode|null} functionNode\n * @param {boolean} [checkDefaultObjects]\n * @param {boolean} [ignoreInterfacedParameters]\n * @throws {Error}\n * @returns {ParamNameInfo[]}\n */\nconst getFunctionParameterNames = (\n functionNode, checkDefaultObjects, ignoreInterfacedParameters,\n) => {\n /* eslint-disable complexity -- Temporary */\n /**\n * @param {import('estree').Identifier|import('estree').AssignmentPattern|\n * import('estree').ObjectPattern|import('estree').Property|\n * import('estree').RestElement|import('estree').ArrayPattern|\n * import('@typescript-eslint/types').TSESTree.TSParameterProperty|\n * import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.RestElement|\n * import('@typescript-eslint/types').TSESTree.Identifier|\n * import('@typescript-eslint/types').TSESTree.ObjectPattern|\n * import('@typescript-eslint/types').TSESTree.BindingName|\n * import('@typescript-eslint/types').TSESTree.Parameter\n * } param\n * @param {boolean} [isProperty]\n * @returns {ParamNameInfo|[string, ParamNameInfo[]]}\n */\n const getParamName = (param, isProperty) => {\n /* eslint-enable complexity -- Temporary */\n const hasLeftTypeAnnotation = 'left' in param && 'typeAnnotation' in param.left;\n\n if ('typeAnnotation' in param || hasLeftTypeAnnotation) {\n if (ignoreInterfacedParameters && 'typeAnnotation' in param &&\n param.typeAnnotation) {\n // No-op\n return [\n undefined, {\n hasPropertyRest: false,\n hasRestElement: false,\n names: [],\n rests: [],\n },\n ];\n }\n\n const typeAnnotation = hasLeftTypeAnnotation ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).typeAnnotation :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier|import('@typescript-eslint/types').TSESTree.ObjectPattern} */\n (param).typeAnnotation;\n\n if (typeAnnotation?.typeAnnotation?.type === 'TSTypeLiteral') {\n const propertyNames = typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */\n (member),\n );\n });\n\n const flattened = {\n ...flattenRoots(propertyNames),\n annotationParamName: 'name' in param ? param.name : undefined,\n };\n const hasLeftName = 'left' in param && 'name' in param.left;\n\n if ('name' in param || hasLeftName) {\n return [\n hasLeftName ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).name :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param\n ).name,\n flattened,\n ];\n }\n\n return [\n undefined, flattened,\n ];\n }\n }\n\n if ('name' in param) {\n return param.name;\n }\n\n if ('left' in param && 'name' in param.left) {\n return param.left.name;\n }\n\n if (\n param.type === 'ObjectPattern' ||\n ('left' in param &&\n (\n param\n ).left.type === 'ObjectPattern')\n ) {\n const properties = /** @type {import('@typescript-eslint/types').TSESTree.ObjectPattern} */ (\n param\n ).properties ||\n /** @type {import('estree').ObjectPattern} */\n (\n /** @type {import('@typescript-eslint/types').TSESTree.AssignmentPattern} */ (\n param\n ).left\n )?.properties;\n const roots = properties.map((prop) => {\n return getParamName(prop, true);\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if (param.type === 'Property') {\n switch (param.value.type) {\n case 'ArrayPattern': {\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n }\n\n case 'ObjectPattern': {\n return [\n /** @type {import('estree').Identifier} */ (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value\n ).properties.map((prop) => {\n return /** @type {string|[string, string[]]} */ (getParamName(prop, isProperty));\n }),\n ];\n }\n\n case 'AssignmentPattern': {\n switch (param.value.left.type) {\n case 'ArrayPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value.left\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n case 'Identifier':\n // Default parameter\n if (checkDefaultObjects && param.value.right.type === 'ObjectExpression') {\n return [\n /** @type {import('estree').Identifier} */ (\n param.key\n ).name,\n /** @type {import('estree').AssignmentPattern} */ (\n param.value\n ).right.properties.map((prop) => {\n return /** @type {string} */ (getParamName(\n /** @type {import('estree').Property} */\n (prop),\n isProperty,\n ));\n }),\n ];\n }\n\n break;\n case 'ObjectPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value.left\n ).properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n }\n }\n }\n\n switch (param.key.type) {\n case 'Identifier':\n return param.key.name;\n\n // The key of an object could also be a string or number\n case 'Literal':\n /* c8 ignore next 2 -- `raw` may not be present in all parsers */\n return /** @type {string} */ (param.key.raw ||\n param.key.value);\n\n // case 'MemberExpression':\n default:\n // Todo: We should really create a structure (and a corresponding\n // option analogous to `checkRestProperty`) which allows for\n // (and optionally requires) dynamic properties to have a single\n // line of documentation\n return undefined;\n }\n }\n\n if (\n param.type === 'ArrayPattern' ||\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left?.type === 'ArrayPattern'\n ) {\n const elements = /** @type {import('estree').ArrayPattern} */ (\n param\n ).elements || /** @type {import('estree').ArrayPattern} */ (\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left\n )?.elements;\n const roots = elements.map((prop, idx) => {\n return {\n name: `\"${idx}\"`,\n restElement: prop?.type === 'RestElement',\n };\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if ([\n 'ExperimentalRestProperty', 'RestElement',\n ].includes(param.type)) {\n return {\n isRestProperty: isProperty,\n name: /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.RestElement} */ (\n param\n // @ts-expect-error Ok\n ).argument).name ?? param?.argument?.elements?.map(({\n // @ts-expect-error Ok\n name,\n }) => {\n return name;\n }),\n restElement: true,\n };\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSParameterProperty} */ (\n param\n ).parameter\n ),\n true,\n );\n }\n\n throw new Error(`Unsupported function signature format: \\`${param.type}\\`.`);\n };\n\n if (!functionNode) {\n return [];\n }\n\n return (\n /** @type {import('@typescript-eslint/types').TSESTree.TSFunctionType} */\n (/** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (functionNode)?.typeAnnotation?.typeAnnotation)?.params ||\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params || /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n functionNode\n ).value?.params || []).map((param) => {\n return getParamName(param);\n });\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode} functionNode\n * @returns {Integer}\n */\nconst hasParams = (functionNode) => {\n // Should also check `functionNode.value.params` if supporting `MethodDefinition`\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params.length;\n};\n\n/**\n * Gets all names of the target type, including those that refer to a path, e.g.\n * `foo` or `foo.bar`.\n * @param {import('comment-parser').Block} jsdoc\n * @param {string} targetTagName\n * @returns {{\n * idx: Integer,\n * name: string,\n * type: string\n * }[]}\n */\nconst getJsdocTagsDeep = (jsdoc, targetTagName) => {\n const ret = [];\n for (const [\n idx,\n {\n name,\n tag,\n type,\n },\n ] of jsdoc.tags.entries()) {\n if (tag !== targetTagName) {\n continue;\n }\n\n ret.push({\n idx,\n name,\n type,\n });\n }\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\n\n/**\n * @param {ParserMode|undefined} mode\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {import('./tagNames.js').AliasedTags}\n */\nconst getTagNamesForMode = (mode, context) => {\n switch (mode) {\n case 'closure':\n case 'permissive':\n return closureTags;\n case 'jsdoc':\n return jsdocTags;\n case 'typescript':\n return typeScriptTags;\n default:\n if (!modeWarnSettings.hasBeenWarned(context, 'mode')) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: `Unrecognized value \\`${mode}\\` for \\`settings.jsdoc.mode\\`.`,\n });\n modeWarnSettings.markSettingAsWarned(context, 'mode');\n }\n\n // We'll avoid breaking too many other rules\n return jsdocTags;\n }\n};\n\n/**\n * @param {import('comment-parser').Spec} tg\n * @param {boolean} [returnArray]\n * @returns {string[]|string}\n */\nconst getTagDescription = (tg, returnArray) => {\n /**\n * @type {string[]}\n */\n const descriptions = [];\n tg.source.some(({\n tokens: {\n description,\n end,\n lineEnd,\n name,\n postDelimiter,\n postTag,\n tag,\n type,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return returnArray ? descriptions : descriptions.join('\\n');\n};\n\n/**\n * @typedef {{\n * report: (descriptor: import('eslint').Rule.ReportDescriptor) => void\n * }} Reporter\n */\n\n/**\n * @param {string} name\n * @param {ParserMode|undefined} mode\n * @param {TagNamePreference} tagPreference\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {string|false|{\n * message: string;\n * replacement?: string|undefined;\n * }}\n */\nconst getPreferredTagNameSimple = (\n name,\n mode,\n tagPreference = {},\n // @ts-expect-error Just a no-op\n // eslint-disable-next-line unicorn/no-object-as-default-parameter -- Ok\n context = {\n report () {\n // No-op\n },\n },\n) => {\n const prefValues = Object.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n // Allow keys to have a 'tag ' prefix to avoid upstream bug in ESLint\n // that disallows keys that conflict with Object.prototype,\n // e.g. 'tag constructor' for 'constructor':\n // https://github.com/eslint/eslint/issues/13289\n // https://github.com/gajus/eslint-plugin-jsdoc/issues/537\n const tagPreferenceFixed = Object.fromEntries(\n Object\n .entries(tagPreference)\n .map(([\n key,\n value,\n ]) => {\n return [\n key.replace(/^tag /v, ''), value,\n ];\n }),\n );\n\n if (Object.hasOwn(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([\n , aliases,\n ]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {string} name\n * @param {string[]} definedTags\n * @returns {boolean}\n */\nconst isValidTag = (\n context,\n mode,\n name,\n definedTags,\n) => {\n const tagNames = getTagNamesForMode(mode, context);\n\n const validTagNames = Object.keys(tagNames).concat(Object.values(tagNames).flat());\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} targetTagName\n * @returns {boolean}\n */\nconst hasTag = (jsdoc, targetTagName) => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return jsdoc.tags.some((doc) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {(tag: import('@es-joy/jsdoccomment').JsdocTagWithInline) => boolean} filter\n * @returns {import('@es-joy/jsdoccomment').JsdocTagWithInline[]}\n */\nconst filterTags = (jsdoc, filter) => {\n return jsdoc.tags.filter((tag) => {\n return filter(tag);\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @returns {import('comment-parser').Spec[]}\n */\nconst getTags = (jsdoc, tagName) => {\n return filterTags(jsdoc, (item) => {\n return item.tag === tagName;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {{\n * tagName: string,\n * context?: import('eslint').Rule.RuleContext,\n * mode?: ParserMode,\n * report?: import('./iterateJsdoc.js').Report\n * tagNamePreference?: TagNamePreference\n * skipReportingBlockedTag?: boolean,\n * allowObjectReturn?: boolean,\n * defaultMessage?: string,\n * }} cfg\n * @returns {string|undefined|false|{\n * message: string;\n * replacement?: string|undefined;\n * }|{\n * blocked: true,\n * tagName: string\n * }}\n */\nconst getPreferredTagName = (jsdoc, {\n allowObjectReturn = false,\n context,\n tagName,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n mode,\n report = () => {},\n skipReportingBlockedTag = false,\n tagNamePreference,\n}) => {\n const ret = getPreferredTagNameSimple(tagName, mode, tagNamePreference, context);\n const isObject = ret && typeof ret === 'object';\n if (hasTag(jsdoc, tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, getTags(jsdoc, tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @param {(\n * matchingJsdocTag: import('@es-joy/jsdoccomment').JsdocTagWithInline,\n * targetTagName: string\n * ) => void} arrayHandler\n * @param {object} cfg\n * @param {import('eslint').Rule.RuleContext} [cfg.context]\n * @param {ParserMode} [cfg.mode]\n * @param {import('./iterateJsdoc.js').Report} [cfg.report]\n * @param {TagNamePreference} [cfg.tagNamePreference]\n * @param {boolean} [cfg.skipReportingBlockedTag]\n * @returns {void}\n */\nconst forEachPreferredTag = (\n jsdoc, tagName, arrayHandler,\n {\n context,\n mode,\n report,\n skipReportingBlockedTag = false,\n tagNamePreference,\n } = {},\n) => {\n const targetTagName = /** @type {string|false} */ (\n getPreferredTagName(jsdoc, {\n context,\n mode,\n report,\n skipReportingBlockedTag,\n tagName,\n tagNamePreference,\n })\n );\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(\n /**\n * @type {import('@es-joy/jsdoccomment').JsdocTagWithInline}\n */ (\n matchingJsdocTag\n ), targetTagName,\n );\n }\n};\n\n/**\n * Get all inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getInlineTags = (jsdoc) => {\n return [\n ...jsdoc.inlineTags.map((inlineTag) => {\n // Tags don't have source or line numbers, so add before returning\n let line = -1;\n for (const {\n tokens: {\n description,\n },\n } of jsdoc.source) {\n line++;\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n break;\n }\n }\n\n inlineTag.line = line;\n\n return inlineTag;\n }),\n ...jsdoc.tags.flatMap((tag) => {\n for (const inlineTag of tag.inlineTags) {\n /** @type {import('./iterateJsdoc.js').Integer} */\n let line = 0;\n for (const {\n number,\n tokens: {\n description,\n },\n } of tag.source) {\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n line = number;\n break;\n }\n }\n\n inlineTag.line = line;\n }\n\n return (\n /**\n * @type {import('comment-parser').Spec & {\n * inlineTags: import('@es-joy/jsdoccomment').JsdocInlineTagNoType[]\n * }}\n */ (\n tag\n ).inlineTags\n );\n }),\n ];\n};\n\n/**\n * Get all tags, inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getAllTags = (jsdoc) => {\n return [\n ...jsdoc.tags,\n ...getInlineTags(jsdoc),\n ];\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string[]} targetTagNames\n * @returns {boolean}\n */\nconst hasATag = (jsdoc, targetTagNames) => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment has an undefined type.\n * @param {import('comment-parser').Spec|null|undefined} tag\n * the tag which should be checked.\n * @param {ParserMode} mode\n * @returns {boolean}\n * true in case a defined type is undeclared; otherwise false.\n */\nconst mayBeUndefinedTypeTag = (tag, mode) => {\n // The function should not continue in the event the type is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return true;\n }\n\n // .. same applies if it declares an `{undefined}` or `{void}` type\n const tagType = tag.type.trim();\n\n // Exit early if matching\n if (\n tagType === 'undefined' || tagType === 'void' ||\n tagType === '*' || tagType === 'any'\n ) {\n return true;\n }\n\n let parsedTypes;\n try {\n parsedTypes = tryParse(\n tagType,\n mode === 'permissive' ? undefined : [\n mode,\n ],\n );\n } catch {\n // Ignore\n }\n\n if (\n // We do not traverse deeply as it could be, e.g., `Promise<void>`\n parsedTypes &&\n parsedTypes.type === 'JsdocTypeUnion' &&\n parsedTypes.elements.some((elem) => {\n return elem.type === 'JsdocTypeUndefined' ||\n elem.type === 'JsdocTypeName' && elem.value === 'void';\n })) {\n return true;\n }\n\n // In any other case, a type is present\n return false;\n};\n\n/**\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} map\n * @param {string} tag\n * @returns {Map<string, string|string[]|boolean|undefined>}\n */\nconst ensureMap = (map, tag) => {\n if (!map.has(tag)) {\n map.set(tag, new Map());\n }\n\n return /** @type {Map<string, string | boolean>} */ (map.get(tag));\n};\n\n/**\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {void}\n */\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n for (const [\n tag,\n {\n name,\n required = [],\n type,\n },\n ] of Object.entries(structuredTags)) {\n const tagStruct = ensureMap(tagMap, tag);\n\n tagStruct.set('namepathRole', name);\n tagStruct.set('typeAllowed', type);\n\n const requiredName = required.includes('name');\n if (requiredName && name === false) {\n throw new Error('Cannot add \"name\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n tagStruct.set('nameRequired', requiredName);\n\n const requiredType = required.includes('type');\n if (requiredType && type === false) {\n throw new Error('Cannot add \"type\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeRequired', requiredType);\n\n const typeOrNameRequired = required.includes('typeOrNameRequired');\n if (typeOrNameRequired && name === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n }\n};\n\n/**\n * @param {ParserMode} mode\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @returns {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nconst getTagStructureForMode = (mode, structuredTags) => {\n const tagStruct = getDefaultTagStructureForMode(mode);\n\n try {\n overrideTagStructure(structuredTags, tagStruct);\n /* c8 ignore next 3 */\n } catch {\n //\n }\n\n return tagStruct;\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNameOrNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {(string|boolean|undefined)[]} */ ([\n 'name-defining',\n 'namepath-defining',\n ]).includes(/** @type {string|boolean|undefined} */ (\n tagStruct.get('namepathRole')));\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('@es-joy/jsdoccomment').JsdocBlockWithInline[]}\n */\nconst getJSDocCommentBlocks = (sourceCode) => {\n return sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*(?!\\*)/v).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('comment-parser').Spec[]}\n */\nconst getDocumentNamepathDefiningTags = (sourceCode) => {\n return getJSDocCommentBlocks(sourceCode)\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return isNameOrNamepathDefiningTag(tag) && ![\n 'arg',\n 'argument',\n 'param',\n 'prop',\n 'property',\n ].includes(tag);\n });\n });\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathOrUrlReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-or-url-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('typeRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|string}\n */\nconst tagMightHaveTypePosition = (tag, tagMap = tagStructure) => {\n if (tagMustHaveTypePosition(tag, tagMap)) {\n return true;\n }\n\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = /** @type {boolean|undefined} */ (tagStruct.get('typeAllowed'));\n\n return ret === undefined ? true : ret;\n};\n\nconst namepathTypes = new Set([\n 'name-defining', 'namepath-defining',\n 'namepath-referencing',\n]);\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('namepathRole');\n\n return ret === undefined ? true : Boolean(ret);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNameOrNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n namepathTypes.has(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n [\n 'namepath-defining',\n 'namepath-referencing',\n ].includes(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveName = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n nampathRole === 'name-defining';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('nameRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return Boolean(tagMightHaveTypePosition(tag, tagMap)) || tagMightHaveNameOrNamepath(tag, tagMap);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean} */ (tagStruct.get('typeOrNameRequired'));\n};\n\n/**\n * @param {import('comment-parser').Spec} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => {\n const mustHaveTypePosition = tagMustHaveTypePosition(tag.tag, tagMap);\n const mightHaveTypePosition = tagMightHaveTypePosition(tag.tag, tagMap);\n const hasTypePosition = mightHaveTypePosition && Boolean(tag.type);\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition(tag.tag, tagMap) ||\n tagMightHaveNameOrNamepath(tag.tag, tagMap)\n ) && Boolean(tag.name);\n const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap);\n const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) &&\n (hasTypePosition || hasNameOrNamepathPosition);\n\n return mustHaveEither && !hasEither && !mustHaveTypePosition;\n};\n\n/* eslint-disable complexity -- Temporary */\n/**\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasNonFunctionYield = (node, checkYieldReturnValue) => {\n /* eslint-enable complexity -- Temporary */\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'ArrayExpression':\n\n case 'ArrayPattern':\n return node.elements.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonFunctionYield(node.left, checkYieldReturnValue) ||\n hasNonFunctionYield(node.right, checkYieldReturnValue);\n }\n\n case 'AssignmentPattern':\n return hasNonFunctionYield(node.right, checkYieldReturnValue);\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return ![\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(bodyNode.type) && hasNonFunctionYield(\n bodyNode, checkYieldReturnValue,\n );\n });\n }\n\n /* c8 ignore next 2 -- In Babel? */\n case 'CallExpression':\n // @ts-expect-error In Babel?\n case 'OptionalCallExpression':\n return node.arguments.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'ChainExpression':\n case 'ExpressionStatement': {\n return hasNonFunctionYield(node.expression, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ClassProperty':\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectProperty':\n /* c8 ignore next 2 -- In Babel? */\n case 'Property':\n\n case 'PropertyDefinition':\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n hasNonFunctionYield(node.value, checkYieldReturnValue);\n\n case 'ConditionalExpression':\n\n case 'IfStatement': {\n return hasNonFunctionYield(node.test, checkYieldReturnValue) ||\n hasNonFunctionYield(node.consequent, checkYieldReturnValue) ||\n hasNonFunctionYield(node.alternate, checkYieldReturnValue);\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n\n case 'ForOfStatement':\n\n case 'ForStatement':\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasNonFunctionYield(node.body, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonFunctionYield(node.source, checkYieldReturnValue);\n\n // ?.\n /* c8 ignore next 2 -- In Babel? */\n case 'MemberExpression':\n // @ts-expect-error In Babel?\n case 'OptionalMemberExpression':\n return hasNonFunctionYield(node.object, checkYieldReturnValue) ||\n hasNonFunctionYield(node.property, checkYieldReturnValue);\n\n case 'ObjectExpression':\n case 'ObjectPattern':\n return node.properties.some((property) => {\n return hasNonFunctionYield(property, checkYieldReturnValue);\n });\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectMethod':\n /* c8 ignore next 6 -- In Babel? */\n // @ts-expect-error In Babel?\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n // @ts-expect-error In Babel?\n node.arguments.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n }\n\n // Comma\n case 'SequenceExpression':\n\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonFunctionYield(subExpression, checkYieldReturnValue);\n });\n case 'SpreadElement':\n\n case 'UnaryExpression':\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n },\n );\n }\n\n case 'TaggedTemplateExpression':\n return hasNonFunctionYield(node.quasi, checkYieldReturnValue);\n\n case 'TryStatement': {\n return hasNonFunctionYield(node.block, checkYieldReturnValue) ||\n hasNonFunctionYield(\n node.handler && node.handler.body, checkYieldReturnValue,\n ) ||\n hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.BlockStatement} */\n (node.finalizer),\n checkYieldReturnValue,\n );\n }\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonFunctionYield(node.id, checkYieldReturnValue) ||\n hasNonFunctionYield(node.init, checkYieldReturnValue);\n }\n\n case 'YieldExpression': {\n if (checkYieldReturnValue) {\n if (\n /** @type {import('eslint').Rule.Node} */ (\n node\n ).parent?.type === 'VariableDeclarator'\n ) {\n return true;\n }\n\n return false;\n }\n\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n * @param {ESTreeOrTypeScriptNode} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasYieldValue = (node, checkYieldReturnValue) => {\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).generator && (\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).expression || hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */\n (node).body,\n checkYieldReturnValue,\n )\n );\n};\n\n/**\n * Checks if a node has a throws statement.\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [innerFunction]\n * @returns {boolean}\n */\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n\n // There are cases where a function may execute its inner function which\n // throws, but we're treating functions atomically rather than trying to\n // follow them\n switch (node.type) {\n case 'ArrowFunctionExpression':\n case 'FunctionDeclaration':\n case 'FunctionExpression': {\n return !innerFunction && !node.async && hasThrowValue(node.body, true);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'ForStatement':\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasThrowValue(node.body);\n }\n\n case 'IfStatement': {\n return hasThrowValue(node.consequent) || hasThrowValue(node.alternate);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasThrowValue(nde);\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n // We only consider it to throw an error if the catch or finally blocks throw an error.\n case 'TryStatement': {\n return hasThrowValue(node.handler && node.handler.body) ||\n hasThrowValue(node.finalizer);\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @param {string} tag\n */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /v.test(tag);\n};\n*/\n\n/**\n * Splits a `@template` tag's names on commas that separate template entries,\n * ignoring commas nested within a type expression so that default values such\n * as `[T=Record<string, unknown>]` are not split apart.\n *\n * Only `<`, `(` and `{` are treated as nesting: a comma within them is part of\n * a type (generic arguments, function params, object type). Square brackets are\n * deliberately not counted, since `[...]` is the optional/default wrapper in\n * which commas do separate entries, e.g. `[T=string, U=number]`.\n * @param {string} str\n * @returns {string[]}\n */\nconst splitTopLevelCommas = (str) => {\n const parts = [];\n let depth = 0;\n let current = '';\n for (const char of str) {\n if (char === '<' || char === '{' || char === '(') {\n depth++;\n } else if (char === '>' || char === '}' || char === ')') {\n depth = Math.max(0, depth - 1);\n }\n\n if (char === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += char;\n }\n }\n\n parts.push(current);\n\n return parts;\n};\n\n/**\n * Parses GCC Generic/Template types\n * @see {@link https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @see {@link https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#template}\n * @param {import('comment-parser').Spec} tag\n * @returns {string[]}\n */\nconst parseClosureTemplateTag = (tag) => {\n return splitTopLevelCommas(tag.name)\n .map((type) => {\n return type.trim().replace(/^\\[?(?<name>.*?)=.*$/v, '$<name>');\n });\n};\n\n/**\n * @typedef {true|string[]} DefaultContexts\n */\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n * @param {import('eslint').Rule.RuleContext} context\n * @param {DefaultContexts|undefined} defaultContexts\n * @param {{\n * contexts?: import('./iterateJsdoc.js').Context[]\n * }} settings\n * @returns {(string|import('./iterateJsdoc.js').ContextObject)[]}\n */\nconst enforcedContexts = (context, defaultContexts, settings) => {\n const contexts = context.options[0]?.contexts || settings.contexts || (defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ] : defaultContexts);\n\n return contexts;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').Context[]} contexts\n * @param {import('./iterateJsdoc.js').CheckJsdoc} checkJsdoc\n * @param {import('@es-joy/jsdoccomment').CommentHandler} [handler]\n * @returns {import('eslint').Rule.RuleListener}\n */\nconst getContextObject = (contexts, checkJsdoc, handler) => {\n /** @type {import('eslint').Rule.RuleListener} */\n const properties = {};\n\n for (const [\n idx,\n prop,\n ] of contexts.entries()) {\n /** @type {string} */\n let property;\n\n /** @type {(node: import('eslint').Rule.Node) => void} */\n let value;\n\n if (typeof prop === 'object') {\n const selInfo = {\n lastIndex: idx,\n selector: prop.context,\n };\n if (prop.comment) {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(\n null,\n {\n ...selInfo,\n comment: prop.comment,\n },\n /**\n * @type {(jsdoc: import('@es-joy/jsdoccomment').JsdocBlockWithInline) => boolean}\n */\n (/** @type {import('@es-joy/jsdoccomment').CommentHandler} */ (\n handler\n ).bind(null, prop.comment)),\n );\n } else {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(null, selInfo, null);\n }\n } else {\n const selInfo = {\n lastIndex: idx,\n selector: prop,\n };\n property = prop;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n\n const old = /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */ (properties[property]);\n properties[property] = old ?\n /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */\n function (node) {\n old(node);\n value(node);\n } :\n value;\n }\n\n return properties;\n};\n\nconst tagsWithNamesAndDescriptions = new Set([\n 'arg', 'argument', 'param', 'prop', 'property',\n 'return',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'template',\n]);\n\n/**\n * @typedef {{\n * [key: string]: false|string|\n * {message: string, replacement?: string}\n * }} TagNamePreference\n */\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {import('comment-parser').Spec[]} tags\n * @returns {{\n * tagsWithNames: import('comment-parser').Spec[],\n * tagsWithoutNames: import('comment-parser').Spec[]\n * }}\n */\nconst getTagsByType = (context, mode, tags) => {\n /**\n * @type {import('comment-parser').Spec[]}\n */\n const tagsWithoutNames = [];\n const tagsWithNames = tags.filter((tag) => {\n const {\n tag: tagName,\n } = tag;\n const tagWithName = tagsWithNamesAndDescriptions.has(tagName);\n if (!tagWithName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\n/**\n * @param {import('eslint').SourceCode|{\n * text: string\n * }} sourceCode\n * @returns {string}\n */\nconst getIndent = (sourceCode) => {\n return (sourceCode.text.match(/^\\n*([ \\t]+)/v)?.[1] ?? '') + ' ';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isConstructor = (node) => {\n return node?.type === 'MethodDefinition' && node.kind === 'constructor' ||\n /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n node?.parent\n )?.kind === 'constructor';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isGetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (\n node.parent\n )?.kind === 'get';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isSetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */(\n node.parent\n )?.kind === 'set';\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst hasAccessorPair = (node) => {\n const {\n key,\n kind: sourceKind,\n type,\n } =\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (node);\n\n const sourceName =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n key\n ).name;\n\n const oppositeKind = sourceKind === 'get' ? 'set' : 'get';\n\n const sibling = type === 'MethodDefinition' ?\n /** @type {import('@typescript-eslint/types').TSESTree.ClassBody} */ (\n node.parent\n ).body :\n /** @type {import('@typescript-eslint/types').TSESTree.ObjectExpression} */ (\n node.parent\n ).properties;\n\n return (\n sibling.some((child) => {\n const {\n key: ky,\n kind,\n } = /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (child);\n\n const name =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n ky\n ).name;\n\n return kind === oppositeKind && name === sourceName;\n })\n );\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {import('eslint').Rule.Node|null} node\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4} schema\n * @returns {boolean}\n */\nconst exemptSpeciaMethods = (jsdoc, node, context, schema) => {\n /**\n * @param {\"checkGetters\"|\"checkSetters\"|\"checkConstructors\"} prop\n * @returns {boolean|\"no-setter\"|\"no-getter\"}\n */\n const hasSchemaOption = (prop) => {\n const schemaProperties = schema[0].properties;\n\n return context.options[0]?.[prop] ??\n (schemaProperties[prop] && schemaProperties[prop].default);\n };\n\n const checkGetters = hasSchemaOption('checkGetters');\n const checkSetters = hasSchemaOption('checkSetters');\n\n return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n isGetter(node) && (\n !checkGetters ||\n checkGetters === 'no-setter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n ) ||\n isSetter(node) && (\n !checkSetters ||\n checkSetters === 'no-getter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n );\n};\n\n/**\n * Since path segments may be unquoted (if matching a reserved word,\n * identifier or numeric literal) or single or double quoted, in either\n * the `@param` or in source, we need to strip the quotes to give a fair\n * comparison.\n * @param {string} str\n * @returns {string}\n */\nconst dropPathSegmentQuotes = (str) => {\n return str.replaceAll(/\\.(['\"])(.*)\\1/gv, '.$2');\n};\n\n/**\n * @param {string} name\n * @returns {(otherPathName: string) => boolean}\n */\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\n};\n\n/**\n * @callback PathDoesNotBeginWith\n * @param {string} name\n * @param {string} otherPathName\n * @returns {boolean}\n */\n\n/** @type {PathDoesNotBeginWith} */\nconst pathDoesNotBeginWith = (name, otherPathName) => {\n return !name.startsWith(otherPathName) &&\n !dropPathSegmentQuotes(name).startsWith(dropPathSegmentQuotes(otherPathName));\n};\n\n/**\n * @param {string} regexString\n * @param {string} [requiredFlags]\n * @returns {RegExp}\n */\nconst getRegexFromString = (regexString, requiredFlags) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyvus]*)$/vs);\n let flags = 'v';\n let regex = regexString;\n if (match) {\n [\n , regex,\n flags,\n ] = match;\n if (!flags) {\n flags = 'v';\n }\n }\n\n const uniqueFlags = [\n ...new Set(flags + (requiredFlags || '')),\n ];\n flags = uniqueFlags.join('');\n\n return new RegExp(regex, flags);\n};\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n * @param {import('jsdoc-type-pratt-parser').RootResult} parsedType\n * @param {string} indent\n * @param {string} typeBracketSpacing\n */\nconst rewireByParsedType = (jsdoc, tag, parsedType, indent, typeBracketSpacing = '') => {\n const typeLines = stringify(parsedType).split('\\n');\n const firstTypeLine = typeLines.shift();\n const lastTypeLine = typeLines.pop();\n\n const beginNameOrDescIdx = tag.source.findIndex(({\n tokens,\n }) => {\n return tokens.name || tokens.description;\n });\n\n const nameAndDesc = beginNameOrDescIdx === -1 ?\n null :\n tag.source.slice(beginNameOrDescIdx);\n\n const initialNumber = tag.source[0].number;\n\n const src = [\n // Get inevitably present tag from first `tag.source`\n {\n number: initialNumber,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n ...(typeLines.length || lastTypeLine ? {\n end: '',\n name: '',\n postName: '',\n postType: '',\n } : (nameAndDesc ? {\n name: nameAndDesc[0].tokens.name,\n postType: ' ',\n } : {})),\n type: '{' + typeBracketSpacing + firstTypeLine + (!typeLines.length && lastTypeLine === undefined ? typeBracketSpacing + '}' : ''),\n },\n },\n // Get any intervening type lines\n ...(typeLines.length ? typeLines.map((typeLine, idx) => {\n return {\n number: initialNumber + idx + 1,\n source: '',\n tokens: {\n // Grab any delimiter info from first item\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n end: '',\n name: '',\n postName: '',\n postTag: '',\n postType: '',\n start: indent + ' ',\n tag: '',\n type: typeLine,\n },\n };\n }) : []),\n ];\n\n // Merge any final type line and name and description\n if (\n // Name and description may be already included if present with the tag\n nameAndDesc && beginNameOrDescIdx > 0\n ) {\n if (typeLines.length || lastTypeLine !== undefined) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (nameAndDesc) {\n if ((typeLines.length || lastTypeLine !== undefined) && lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n delimiter: nameAndDesc[0].tokens.delimiter === '/**' ? '*' : nameAndDesc[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n tag.source = src;\n\n // Properly rewire `jsdoc.source`\n const firstTagIdx = jsdoc.source.findIndex(({\n tokens: {\n tag: tg,\n },\n }) => {\n return tg;\n });\n\n const initialEndSource = jsdoc.source.find(({\n tokens: {\n end,\n },\n }) => {\n return end;\n });\n\n jsdoc.source = [\n ...jsdoc.source.slice(0, firstTagIdx),\n ...jsdoc.tags.flatMap(({\n source,\n }) => {\n return source;\n }),\n ];\n\n if (initialEndSource && !jsdoc.source.at(-1)?.tokens?.end) {\n jsdoc.source.push(initialEndSource);\n }\n};\n\nexport {\n comparePaths,\n dropPathSegmentQuotes,\n enforcedContexts,\n exemptSpeciaMethods,\n filterTags,\n flattenRoots,\n forEachPreferredTag,\n getAllTags,\n getContextObject,\n getDocumentNamepathDefiningTags,\n getFunctionParameterNames,\n getIndent,\n getInlineTags,\n getJSDocCommentBlocks,\n getJsdocTagsDeep,\n getPreferredTagName,\n getPreferredTagNameSimple,\n getRegexFromString,\n getTagDescription,\n getTags,\n getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasParams,\n\n hasTag,\n hasThrowValue,\n\n hasYieldValue,\n isConstructor,\n isGetter,\n isNameOrNamepathDefiningTag,\n isNamepathOrUrlReferencingTag,\n isNamepathReferencingTag,\n isSetter,\n isValidTag,\n mayBeUndefinedTypeTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n pathDoesNotBeginWith,\n rewireByParsedType,\n setTagStructure,\n strictNativeTypes,\n tagMightHaveEitherTypeOrNamePosition,\n tagMightHaveName,\n tagMightHaveNameOrNamepath,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n} from './utils/hasReturnValue.js';\n"],"mappings":"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","ignoreList":[]}
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- const accessLevels = ['package', 'private', 'protected', 'public'];
10
- var _default = exports.default = (0, _iterateJsdoc.default)(({
11
- report,
12
- utils
13
- }) => {
14
- utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {
15
- const desc = jsdocParameter.name + ' ' + jsdocParameter.description;
16
- if (!accessLevels.includes(desc.trim())) {
17
- report(`Missing valid JSDoc @${targetTagName} level.`, null, jsdocParameter);
18
- }
19
- });
20
- const accessLength = utils.getTags('access').length;
21
- const individualTagLength = utils.getPresentTags(accessLevels).length;
22
- if (accessLength && individualTagLength) {
23
- report('The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).');
24
- }
25
- if (accessLength > 1 || individualTagLength > 1) {
26
- report('At most one access-control tag may be present on a JSDoc block.');
27
- }
28
- }, {
29
- checkPrivate: true,
30
- iterateAllJsdocs: true,
31
- meta: {
32
- docs: {
33
- description: 'Checks that `@access` tags have a valid value.',
34
- url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header'
35
- },
36
- type: 'suggestion'
37
- }
38
- });
39
- module.exports = exports.default;
40
- //# sourceMappingURL=checkAccess.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkAccess.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/checkAccess.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst accessLevels = [\n 'package', 'private', 'protected', 'public',\n];\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {\n const desc = jsdocParameter.name + ' ' + jsdocParameter.description;\n\n if (!accessLevels.includes(desc.trim())) {\n report(\n `Missing valid JSDoc @${targetTagName} level.`,\n null,\n jsdocParameter,\n );\n }\n });\n const accessLength = utils.getTags('access').length;\n const individualTagLength = utils.getPresentTags(accessLevels).length;\n if (accessLength && individualTagLength) {\n report(\n 'The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).',\n );\n }\n\n if (accessLength > 1 || individualTagLength > 1) {\n report(\n 'At most one access-control tag may be present on a JSDoc block.',\n );\n }\n}, {\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that `@access` tags have a valid value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA8C;AAE9C,MAAM,YAAY,GAAG,CACnB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAC5C;AAAC,iCAEa,IAAAA,qBAAY,EAAC,CAAC;EAC3B,MAAM;EACN;AACF,CAAC,KAAK;EACJ,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,KAAK;IACrE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,cAAc,CAAC,WAAW;IAEnE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;MACvC,MAAM,CACJ,wBAAwB,aAAa,SAAS,EAC9C,IAAI,EACJ,cACF,CAAC;IACH;EACF,CAAC,CAAC;EACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;EACnD,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM;EACrE,IAAI,YAAY,IAAI,mBAAmB,EAAE;IACvC,MAAM,CACJ,iHACF,CAAC;EACH;EAEA,IAAI,YAAY,GAAG,CAAC,IAAI,mBAAmB,GAAG,CAAC,EAAE;IAC/C,MAAM,CACJ,iEACF,CAAC;EACH;AACF,CAAC,EAAE;EACD,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE,IAAI;EACtB,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,gDAAgD;MAC7D,GAAG,EAAE;IACP,CAAC;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA","ignoreList":[]}
@@ -1,78 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
- var _default = exports.default = (0, _iterateJsdoc.default)(({
10
- context,
11
- indent,
12
- jsdocNode,
13
- report,
14
- sourceCode
15
- }) => {
16
- const {
17
- innerIndent = 1
18
- } = context.options[0] || {};
19
-
20
- // `indent` is whitespace from line 1 (`/**`), so slice and account for "/".
21
- const indentLevel = indent.length + innerIndent;
22
- const sourceLines = sourceCode.getText(jsdocNode).split('\n').slice(1).map((line, number) => {
23
- return {
24
- line: line.split('*')[0],
25
- number
26
- };
27
- }).filter(({
28
- line
29
- }) => {
30
- return !line.trimStart().length;
31
- });
32
-
33
- /** @type {import('eslint').Rule.ReportFixer} */
34
- const fix = fixer => {
35
- const replacement = sourceCode.getText(jsdocNode).split('\n').map((line, index) => {
36
- // Ignore the first line and all lines not starting with `*`
37
- const ignored = !index || line.split('*')[0].trimStart().length;
38
- return ignored ? line : `${indent}${''.padStart(innerIndent, ' ')}${line.trimStart()}`;
39
- }).join('\n');
40
- return fixer.replaceText(jsdocNode, replacement);
41
- };
42
- sourceLines.some(({
43
- line,
44
- number
45
- }) => {
46
- if (line.length !== indentLevel) {
47
- report('Expected JSDoc block to be aligned.', fix, {
48
- line: number + 1
49
- });
50
- return true;
51
- }
52
- return false;
53
- });
54
- }, {
55
- iterateAllJsdocs: true,
56
- meta: {
57
- docs: {
58
- description: 'Reports invalid alignment of JSDoc block asterisks.',
59
- url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header'
60
- },
61
- fixable: 'code',
62
- schema: [{
63
- additionalProperties: false,
64
- properties: {
65
- innerIndent: {
66
- default: 1,
67
- description: `Set to 0 if you wish to avoid the normal requirement for an inner indentation of
68
- one space. Defaults to 1 (one space of normal inner indentation).`,
69
- type: 'integer'
70
- }
71
- },
72
- type: 'object'
73
- }],
74
- type: 'layout'
75
- }
76
- });
77
- module.exports = exports.default;
78
- //# sourceMappingURL=checkAlignment.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkAlignment.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/checkAlignment.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdocNode,\n report,\n sourceCode,\n}) => {\n const {\n innerIndent = 1,\n } = context.options[0] || {};\n\n // `indent` is whitespace from line 1 (`/**`), so slice and account for \"/\".\n const indentLevel = indent.length + innerIndent;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n')\n .slice(1)\n .map((line, number) => {\n return {\n line: line.split('*')[0],\n number,\n };\n })\n .filter(({\n line,\n }) => {\n return !line.trimStart().length;\n });\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).split('\\n')\n .map((line, index) => {\n // Ignore the first line and all lines not starting with `*`\n const ignored = !index || line.split('*')[0].trimStart().length;\n\n return ignored ? line : `${indent}${''.padStart(innerIndent, ' ')}${line.trimStart()}`;\n })\n .join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n };\n\n sourceLines.some(({\n line,\n number,\n }) => {\n if (line.length !== indentLevel) {\n report('Expected JSDoc block to be aligned.', fix, {\n line: number + 1,\n });\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block asterisks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n innerIndent: {\n default: 1,\n description: `Set to 0 if you wish to avoid the normal requirement for an inner indentation of\none space. Defaults to 1 (one space of normal inner indentation).`,\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA8C;AAAA,iCAE/B,IAAAA,qBAAY,EAAC,CAAC;EAC3B,OAAO;EACP,MAAM;EACN,SAAS;EACT,MAAM;EACN;AACF,CAAC,KAAK;EACJ,MAAM;IACJ,WAAW,GAAG;EAChB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;EAE5B;EACA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW;EAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1D,KAAK,CAAC,CAAC,CAAC,CACR,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;IACrB,OAAO;MACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC;EACH,CAAC,CAAC,CACD,MAAM,CAAC,CAAC;IACP;EACF,CAAC,KAAK;IACJ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;EACjC,CAAC,CAAC;;EAEJ;EACA,MAAM,GAAG,GAAI,KAAK,IAAK;IACrB,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;MACpB;MACA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;MAE/D,OAAO,OAAO,GAAG,IAAI,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;IACxF,CAAC,CAAC,CACD,IAAI,CAAC,IAAI,CAAC;IAEb,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;EAClD,CAAC;EAED,WAAW,CAAC,IAAI,CAAC,CAAC;IAChB,IAAI;IACJ;EACF,CAAC,KAAK;IACJ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;MAC/B,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACjD,IAAI,EAAE,MAAM,GAAG;MACjB,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd,CAAC,CAAC;AACJ,CAAC,EAAE;EACD,gBAAgB,EAAE,IAAI;EACtB,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,qDAAqD;MAClE,GAAG,EAAE;IACP,CAAC;IACD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CACN;MACE,oBAAoB,EAAE,KAAK;MAC3B,UAAU,EAAE;QACV,WAAW,EAAE;UACX,OAAO,EAAE,CAAC;UACV,WAAW,EAAE;AACzB,kEAAkE;UACtD,IAAI,EAAE;QACR;MACF,CAAC;MACD,IAAI,EAAE;IACR,CAAC,CACF;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA","ignoreList":[]}