eslint-plugin-jsdoc 47.0.1 → 48.0.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 (196) hide show
  1. package/dist/{WarnSettings.js → WarnSettings.cjs} +2 -2
  2. package/dist/WarnSettings.cjs.map +1 -0
  3. package/dist/{alignTransform.js → alignTransform.cjs} +2 -2
  4. package/dist/alignTransform.cjs.map +1 -0
  5. package/dist/{defaultTagOrder.js → defaultTagOrder.cjs} +1 -1
  6. package/dist/defaultTagOrder.cjs.map +1 -0
  7. package/dist/{exportParser.js → exportParser.cjs} +32 -36
  8. package/dist/exportParser.cjs.map +1 -0
  9. package/dist/{generateRule.js → generateRule.cjs} +7 -4
  10. package/dist/generateRule.cjs.map +1 -0
  11. package/dist/{getDefaultTagStructureForMode.js → getDefaultTagStructureForMode.cjs} +1 -1
  12. package/dist/getDefaultTagStructureForMode.cjs.map +1 -0
  13. package/dist/{index.js → index.cjs} +60 -59
  14. package/dist/index.cjs.map +1 -0
  15. package/dist/index.d.ts +2 -2
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/{iterateJsdoc.js → iterateJsdoc.cjs} +16 -21
  18. package/dist/iterateJsdoc.cjs.map +1 -0
  19. package/dist/{jsdocUtils.js → jsdocUtils.cjs} +17 -17
  20. package/dist/jsdocUtils.cjs.map +1 -0
  21. package/dist/rules/{checkAccess.js → checkAccess.cjs} +2 -2
  22. package/dist/rules/checkAccess.cjs.map +1 -0
  23. package/dist/rules/{checkAlignment.js → checkAlignment.cjs} +2 -2
  24. package/dist/rules/checkAlignment.cjs.map +1 -0
  25. package/dist/rules/{checkExamples.js → checkExamples.cjs} +2 -2
  26. package/dist/rules/checkExamples.cjs.map +1 -0
  27. package/dist/rules/{checkIndentation.js → checkIndentation.cjs} +2 -2
  28. package/dist/rules/checkIndentation.cjs.map +1 -0
  29. package/dist/rules/{checkLineAlignment.js → checkLineAlignment.cjs} +3 -3
  30. package/dist/rules/checkLineAlignment.cjs.map +1 -0
  31. package/dist/rules/{checkParamNames.js → checkParamNames.cjs} +2 -2
  32. package/dist/rules/checkParamNames.cjs.map +1 -0
  33. package/dist/rules/{checkPropertyNames.js → checkPropertyNames.cjs} +2 -2
  34. package/dist/rules/checkPropertyNames.cjs.map +1 -0
  35. package/dist/rules/{checkSyntax.js → checkSyntax.cjs} +2 -2
  36. package/dist/rules/checkSyntax.cjs.map +1 -0
  37. package/dist/rules/{checkTagNames.js → checkTagNames.cjs} +2 -2
  38. package/dist/rules/checkTagNames.cjs.map +1 -0
  39. package/dist/rules/{checkTypes.js → checkTypes.cjs} +2 -2
  40. package/dist/rules/checkTypes.cjs.map +1 -0
  41. package/dist/rules/{checkValues.js → checkValues.cjs} +2 -2
  42. package/dist/rules/checkValues.cjs.map +1 -0
  43. package/dist/rules/{emptyTags.js → emptyTags.cjs} +2 -2
  44. package/dist/rules/emptyTags.cjs.map +1 -0
  45. package/dist/rules/{implementsOnClasses.js → implementsOnClasses.cjs} +2 -2
  46. package/dist/rules/implementsOnClasses.cjs.map +1 -0
  47. package/dist/rules/{importsAsDependencies.js → importsAsDependencies.cjs} +10 -12
  48. package/dist/rules/importsAsDependencies.cjs.map +1 -0
  49. package/dist/rules/{informativeDocs.js → informativeDocs.cjs} +2 -2
  50. package/dist/rules/informativeDocs.cjs.map +1 -0
  51. package/dist/rules/{matchDescription.js → matchDescription.cjs} +2 -2
  52. package/dist/rules/matchDescription.cjs.map +1 -0
  53. package/dist/rules/{matchName.js → matchName.cjs} +2 -2
  54. package/dist/rules/matchName.cjs.map +1 -0
  55. package/dist/rules/{multilineBlocks.js → multilineBlocks.cjs} +2 -2
  56. package/dist/rules/multilineBlocks.cjs.map +1 -0
  57. package/dist/rules/{noBadBlocks.js → noBadBlocks.cjs} +2 -2
  58. package/dist/rules/noBadBlocks.cjs.map +1 -0
  59. package/dist/rules/{noBlankBlockDescriptions.js → noBlankBlockDescriptions.cjs} +2 -2
  60. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -0
  61. package/dist/rules/{noBlankBlocks.js → noBlankBlocks.cjs} +2 -2
  62. package/dist/rules/noBlankBlocks.cjs.map +1 -0
  63. package/dist/rules/{noDefaults.js → noDefaults.cjs} +2 -2
  64. package/dist/rules/noDefaults.cjs.map +1 -0
  65. package/dist/rules/{noMissingSyntax.js → noMissingSyntax.cjs} +2 -2
  66. package/dist/rules/noMissingSyntax.cjs.map +1 -0
  67. package/dist/rules/{noMultiAsterisks.js → noMultiAsterisks.cjs} +2 -2
  68. package/dist/rules/noMultiAsterisks.cjs.map +1 -0
  69. package/dist/rules/{noRestrictedSyntax.js → noRestrictedSyntax.cjs} +2 -2
  70. package/dist/rules/noRestrictedSyntax.cjs.map +1 -0
  71. package/dist/rules/{noTypes.js → noTypes.cjs} +2 -2
  72. package/dist/rules/noTypes.cjs.map +1 -0
  73. package/dist/rules/{noUndefinedTypes.js → noUndefinedTypes.cjs} +5 -5
  74. package/dist/rules/noUndefinedTypes.cjs.map +1 -0
  75. package/dist/rules/{requireAsteriskPrefix.js → requireAsteriskPrefix.cjs} +2 -2
  76. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -0
  77. package/dist/rules/{requireDescription.js → requireDescription.cjs} +2 -2
  78. package/dist/rules/requireDescription.cjs.map +1 -0
  79. package/dist/rules/{requireDescriptionCompleteSentence.js → requireDescriptionCompleteSentence.cjs} +2 -2
  80. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -0
  81. package/dist/rules/{requireExample.js → requireExample.cjs} +2 -2
  82. package/dist/rules/requireExample.cjs.map +1 -0
  83. package/dist/rules/{requireFileOverview.js → requireFileOverview.cjs} +2 -2
  84. package/dist/rules/requireFileOverview.cjs.map +1 -0
  85. package/dist/rules/{requireHyphenBeforeParamDescription.js → requireHyphenBeforeParamDescription.cjs} +2 -2
  86. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -0
  87. package/dist/rules/{requireJsdoc.js → requireJsdoc.cjs} +5 -5
  88. package/dist/rules/requireJsdoc.cjs.map +1 -0
  89. package/dist/rules/{requireParam.js → requireParam.cjs} +2 -2
  90. package/dist/rules/requireParam.cjs.map +1 -0
  91. package/dist/rules/{requireParamDescription.js → requireParamDescription.cjs} +2 -2
  92. package/dist/rules/requireParamDescription.cjs.map +1 -0
  93. package/dist/rules/{requireParamName.js → requireParamName.cjs} +2 -2
  94. package/dist/rules/requireParamName.cjs.map +1 -0
  95. package/dist/rules/{requireParamType.js → requireParamType.cjs} +2 -2
  96. package/dist/rules/requireParamType.cjs.map +1 -0
  97. package/dist/rules/{requireProperty.js → requireProperty.cjs} +2 -2
  98. package/dist/rules/requireProperty.cjs.map +1 -0
  99. package/dist/rules/{requirePropertyDescription.js → requirePropertyDescription.cjs} +2 -2
  100. package/dist/rules/requirePropertyDescription.cjs.map +1 -0
  101. package/dist/rules/{requirePropertyName.js → requirePropertyName.cjs} +2 -2
  102. package/dist/rules/requirePropertyName.cjs.map +1 -0
  103. package/dist/rules/{requirePropertyType.js → requirePropertyType.cjs} +2 -2
  104. package/dist/rules/requirePropertyType.cjs.map +1 -0
  105. package/dist/rules/{requireReturns.js → requireReturns.cjs} +4 -4
  106. package/dist/rules/requireReturns.cjs.map +1 -0
  107. package/dist/rules/{requireReturnsCheck.js → requireReturnsCheck.cjs} +2 -2
  108. package/dist/rules/requireReturnsCheck.cjs.map +1 -0
  109. package/dist/rules/{requireReturnsDescription.js → requireReturnsDescription.cjs} +2 -2
  110. package/dist/rules/requireReturnsDescription.cjs.map +1 -0
  111. package/dist/rules/{requireReturnsType.js → requireReturnsType.cjs} +2 -2
  112. package/dist/rules/requireReturnsType.cjs.map +1 -0
  113. package/dist/rules/{requireThrows.js → requireThrows.cjs} +2 -2
  114. package/dist/rules/requireThrows.cjs.map +1 -0
  115. package/dist/rules/{requireYields.js → requireYields.cjs} +2 -2
  116. package/dist/rules/requireYields.cjs.map +1 -0
  117. package/dist/rules/{requireYieldsCheck.js → requireYieldsCheck.cjs} +2 -2
  118. package/dist/rules/requireYieldsCheck.cjs.map +1 -0
  119. package/dist/rules/{sortTags.js → sortTags.cjs} +4 -4
  120. package/dist/rules/sortTags.cjs.map +1 -0
  121. package/dist/rules/{tagLines.js → tagLines.cjs} +2 -2
  122. package/dist/rules/tagLines.cjs.map +1 -0
  123. package/dist/rules/{textEscaping.js → textEscaping.cjs} +2 -2
  124. package/dist/rules/textEscaping.cjs.map +1 -0
  125. package/dist/rules/{validTypes.js → validTypes.cjs} +2 -2
  126. package/dist/rules/validTypes.cjs.map +1 -0
  127. package/dist/{tagNames.js → tagNames.cjs} +1 -1
  128. package/dist/tagNames.cjs.map +1 -0
  129. package/dist/utils/{hasReturnValue.js → hasReturnValue.cjs} +14 -17
  130. package/dist/utils/hasReturnValue.cjs.map +1 -0
  131. package/{eslint.config.mjs → eslint.config.js} +37 -28
  132. package/package.json +16 -16
  133. package/dist/WarnSettings.js.map +0 -1
  134. package/dist/alignTransform.js.map +0 -1
  135. package/dist/defaultTagOrder.js.map +0 -1
  136. package/dist/exportParser.js.map +0 -1
  137. package/dist/generateRule.js.map +0 -1
  138. package/dist/getDefaultTagStructureForMode.js.map +0 -1
  139. package/dist/index.js.map +0 -1
  140. package/dist/iterateJsdoc.js.map +0 -1
  141. package/dist/jsdocUtils.js.map +0 -1
  142. package/dist/rules/checkAccess.js.map +0 -1
  143. package/dist/rules/checkAlignment.js.map +0 -1
  144. package/dist/rules/checkExamples.js.map +0 -1
  145. package/dist/rules/checkIndentation.js.map +0 -1
  146. package/dist/rules/checkLineAlignment.js.map +0 -1
  147. package/dist/rules/checkParamNames.js.map +0 -1
  148. package/dist/rules/checkPropertyNames.js.map +0 -1
  149. package/dist/rules/checkSyntax.js.map +0 -1
  150. package/dist/rules/checkTagNames.js.map +0 -1
  151. package/dist/rules/checkTypes.js.map +0 -1
  152. package/dist/rules/checkValues.js.map +0 -1
  153. package/dist/rules/emptyTags.js.map +0 -1
  154. package/dist/rules/implementsOnClasses.js.map +0 -1
  155. package/dist/rules/importsAsDependencies.js.map +0 -1
  156. package/dist/rules/informativeDocs.js.map +0 -1
  157. package/dist/rules/matchDescription.js.map +0 -1
  158. package/dist/rules/matchName.js.map +0 -1
  159. package/dist/rules/multilineBlocks.js.map +0 -1
  160. package/dist/rules/noBadBlocks.js.map +0 -1
  161. package/dist/rules/noBlankBlockDescriptions.js.map +0 -1
  162. package/dist/rules/noBlankBlocks.js.map +0 -1
  163. package/dist/rules/noDefaults.js.map +0 -1
  164. package/dist/rules/noMissingSyntax.js.map +0 -1
  165. package/dist/rules/noMultiAsterisks.js.map +0 -1
  166. package/dist/rules/noRestrictedSyntax.js.map +0 -1
  167. package/dist/rules/noTypes.js.map +0 -1
  168. package/dist/rules/noUndefinedTypes.js.map +0 -1
  169. package/dist/rules/requireAsteriskPrefix.js.map +0 -1
  170. package/dist/rules/requireDescription.js.map +0 -1
  171. package/dist/rules/requireDescriptionCompleteSentence.js.map +0 -1
  172. package/dist/rules/requireExample.js.map +0 -1
  173. package/dist/rules/requireFileOverview.js.map +0 -1
  174. package/dist/rules/requireHyphenBeforeParamDescription.js.map +0 -1
  175. package/dist/rules/requireJsdoc.js.map +0 -1
  176. package/dist/rules/requireParam.js.map +0 -1
  177. package/dist/rules/requireParamDescription.js.map +0 -1
  178. package/dist/rules/requireParamName.js.map +0 -1
  179. package/dist/rules/requireParamType.js.map +0 -1
  180. package/dist/rules/requireProperty.js.map +0 -1
  181. package/dist/rules/requirePropertyDescription.js.map +0 -1
  182. package/dist/rules/requirePropertyName.js.map +0 -1
  183. package/dist/rules/requirePropertyType.js.map +0 -1
  184. package/dist/rules/requireReturns.js.map +0 -1
  185. package/dist/rules/requireReturnsCheck.js.map +0 -1
  186. package/dist/rules/requireReturnsDescription.js.map +0 -1
  187. package/dist/rules/requireReturnsType.js.map +0 -1
  188. package/dist/rules/requireThrows.js.map +0 -1
  189. package/dist/rules/requireYields.js.map +0 -1
  190. package/dist/rules/requireYieldsCheck.js.map +0 -1
  191. package/dist/rules/sortTags.js.map +0 -1
  192. package/dist/rules/tagLines.js.map +0 -1
  193. package/dist/rules/textEscaping.js.map +0 -1
  194. package/dist/rules/validTypes.js.map +0 -1
  195. package/dist/tagNames.js.map +0 -1
  196. package/dist/utils/hasReturnValue.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"tagNames.js","names":["jsdocTagsUndocumented","modifies","jsdocTags","exports","abstract","access","alias","async","augments","author","borrows","callback","class","classdesc","constant","constructs","copyright","default","deprecated","description","enum","event","example","external","file","fires","function","generator","global","hideconstructor","ignore","implements","inheritdoc","inheritDoc","inner","instance","interface","kind","lends","license","listens","member","memberof","mixes","mixin","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","this","throws","todo","tutorial","type","typedef","variation","version","yields","typeScriptTags","internal","overload","satisfies","template","undocumentedClosureTags","closurePrimitive","customElement","expose","hidden","idGenerator","meaning","mixinClass","mixinFunction","ngInject","owner","typeSummary","wizaction","typeScriptTagsInClosure","closureTags","define","dict","export","externs","final","implicitCast","noalias","nocollapse","nocompile","noinline","nosideeffects","polymer","polymerBehavior","preserve","record","return","struct","suppress","unrestricted"],"sources":["../src/tagNames.js"],"sourcesContent":["/**\n * @typedef {{\n * [key: string]: string[]\n * }} AliasedTags\n */\n\n/**\n * @type {AliasedTags}\n */\nconst jsdocTagsUndocumented = {\n // Undocumented but present; see\n // https://github.com/jsdoc/jsdoc/issues/1283#issuecomment-516816802\n // https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js#L594\n modifies: [],\n};\n\n/**\n * @type {AliasedTags}\n */\nconst jsdocTags = {\n ...jsdocTagsUndocumented,\n abstract: [\n 'virtual',\n ],\n access: [],\n alias: [],\n async: [],\n augments: [\n 'extends',\n ],\n author: [],\n borrows: [],\n callback: [],\n class: [\n 'constructor',\n ],\n classdesc: [],\n constant: [\n 'const',\n ],\n constructs: [],\n copyright: [],\n default: [\n 'defaultvalue',\n ],\n deprecated: [],\n description: [\n 'desc',\n ],\n enum: [],\n event: [],\n example: [],\n exports: [],\n external: [\n 'host',\n ],\n file: [\n 'fileoverview',\n 'overview',\n ],\n fires: [\n 'emits',\n ],\n function: [\n 'func',\n 'method',\n ],\n generator: [],\n global: [],\n hideconstructor: [],\n ignore: [],\n implements: [],\n inheritdoc: [],\n\n // Allowing casing distinct from jsdoc `definitions.js` (required in Closure)\n inheritDoc: [],\n\n inner: [],\n instance: [],\n interface: [],\n kind: [],\n lends: [],\n license: [],\n listens: [],\n member: [\n 'var',\n ],\n memberof: [],\n 'memberof!': [],\n mixes: [],\n mixin: [],\n\n module: [],\n name: [],\n namespace: [],\n override: [],\n package: [],\n param: [\n 'arg',\n 'argument',\n ],\n private: [],\n property: [\n 'prop',\n ],\n protected: [],\n public: [],\n readonly: [],\n requires: [],\n returns: [\n 'return',\n ],\n see: [],\n since: [],\n static: [],\n summary: [],\n\n this: [],\n throws: [\n 'exception',\n ],\n todo: [],\n tutorial: [],\n type: [],\n typedef: [],\n variation: [],\n version: [],\n yields: [\n 'yield',\n ],\n};\n\n/**\n * @type {AliasedTags}\n */\nconst typeScriptTags = {\n ...jsdocTags,\n\n // https://www.typescriptlang.org/tsconfig/#stripInternal\n internal: [],\n\n // https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#overload-support-in-jsdoc\n overload: [],\n\n // https://devblogs.microsoft.com/typescript/announcing-typescript-5-0/#satisfies-support-in-jsdoc\n satisfies: [],\n\n // `@template` is also in TypeScript per:\n // https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc\n template: [],\n};\n\n/**\n * @type {AliasedTags}\n */\nconst undocumentedClosureTags = {\n // These are in Closure source but not in jsdoc source nor in the Closure\n // docs: https://github.com/google/closure-compiler/blob/master/src/com/google/javascript/jscomp/parsing/Annotation.java\n closurePrimitive: [],\n customElement: [],\n expose: [],\n hidden: [],\n idGenerator: [],\n meaning: [],\n mixinClass: [],\n mixinFunction: [],\n ngInject: [],\n owner: [],\n typeSummary: [],\n wizaction: [],\n};\n\nconst {\n /* eslint-disable no-unused-vars */\n inheritdoc,\n internal,\n overload,\n satisfies,\n\n // Will be inverted to prefer `return`\n returns,\n /* eslint-enable no-unused-vars */\n ...typeScriptTagsInClosure\n} = typeScriptTags;\n\n/**\n * @type {AliasedTags}\n */\nconst closureTags = {\n ...typeScriptTagsInClosure,\n ...undocumentedClosureTags,\n\n // From https://github.com/google/closure-compiler/wiki/Annotating-JavaScript-for-the-Closure-Compiler\n // These are all recognized in https://github.com/jsdoc/jsdoc/blob/master/packages/jsdoc/lib/jsdoc/tag/dictionary/definitions.js\n // except for the experimental `noinline` and the casing differences noted below\n\n // Defined as a synonym of `const` in jsdoc `definitions.js`\n define: [],\n\n dict: [],\n export: [],\n externs: [],\n final: [],\n\n // With casing distinct from jsdoc `definitions.js`\n implicitCast: [],\n\n noalias: [],\n nocollapse: [],\n nocompile: [],\n noinline: [],\n nosideeffects: [],\n polymer: [],\n polymerBehavior: [],\n preserve: [],\n\n // Defined as a synonym of `interface` in jsdoc `definitions.js`\n record: [],\n\n return: [\n 'returns',\n ],\n\n struct: [],\n suppress: [],\n\n unrestricted: [],\n};\n\nexport {\n closureTags,\n jsdocTags,\n typeScriptTags,\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAMA,qBAAqB,GAAG;EAC5B;EACA;EACA;EACAC,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;AACA,MAAMC,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG;EAChB,GAAGF,qBAAqB;EACxBI,QAAQ,EAAE,CACR,SAAS,CACV;EACDC,MAAM,EAAE,EAAE;EACVC,KAAK,EAAE,EAAE;EACTC,KAAK,EAAE,EAAE;EACTC,QAAQ,EAAE,CACR,SAAS,CACV;EACDC,MAAM,EAAE,EAAE;EACVC,OAAO,EAAE,EAAE;EACXC,QAAQ,EAAE,EAAE;EACZC,KAAK,EAAE,CACL,aAAa,CACd;EACDC,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,CACR,OAAO,CACR;EACDC,UAAU,EAAE,EAAE;EACdC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAE,CACP,cAAc,CACf;EACDC,UAAU,EAAE,EAAE;EACdC,WAAW,EAAE,CACX,MAAM,CACP;EACDC,IAAI,EAAE,EAAE;EACRC,KAAK,EAAE,EAAE;EACTC,OAAO,EAAE,EAAE;EACXnB,OAAO,EAAE,EAAE;EACXoB,QAAQ,EAAE,CACR,MAAM,CACP;EACDC,IAAI,EAAE,CACJ,cAAc,EACd,UAAU,CACX;EACDC,KAAK,EAAE,CACL,OAAO,CACR;EACDC,QAAQ,EAAE,CACR,MAAM,EACN,QAAQ,CACT;EACDC,SAAS,EAAE,EAAE;EACbC,MAAM,EAAE,EAAE;EACVC,eAAe,EAAE,EAAE;EACnBC,MAAM,EAAE,EAAE;EACVC,UAAU,EAAE,EAAE;EACdC,UAAU,EAAE,EAAE;EAEd;EACAC,UAAU,EAAE,EAAE;EAEdC,KAAK,EAAE,EAAE;EACTC,QAAQ,EAAE,EAAE;EACZC,SAAS,EAAE,EAAE;EACbC,IAAI,EAAE,EAAE;EACRC,KAAK,EAAE,EAAE;EACTC,OAAO,EAAE,EAAE;EACXC,OAAO,EAAE,EAAE;EACXC,MAAM,EAAE,CACN,KAAK,CACN;EACDC,QAAQ,EAAE,EAAE;EACZ,WAAW,EAAE,EAAE;EACfC,KAAK,EAAE,EAAE;EACTC,KAAK,EAAE,EAAE;EAETC,MAAM,EAAE,EAAE;EACVC,IAAI,EAAE,EAAE;EACRC,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,EAAE;EACXC,KAAK,EAAE,CACL,KAAK,EACL,UAAU,CACX;EACDC,OAAO,EAAE,EAAE;EACXC,QAAQ,EAAE,CACR,MAAM,CACP;EACDC,SAAS,EAAE,EAAE;EACbC,MAAM,EAAE,EAAE;EACVC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,CACP,QAAQ,CACT;EACDC,GAAG,EAAE,EAAE;EACPC,KAAK,EAAE,EAAE;EACTC,MAAM,EAAE,EAAE;EACVC,OAAO,EAAE,EAAE;EAEXC,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,CACN,WAAW,CACZ;EACDC,IAAI,EAAE,EAAE;EACRC,QAAQ,EAAE,EAAE;EACZC,IAAI,EAAE,EAAE;EACRC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE,EAAE;EACbC,OAAO,EAAE,EAAE;EACXC,MAAM,EAAE,CACN,OAAO;AAEX,CAAC;;AAED;AACA;AACA;AACA,MAAMC,cAAc,GAAApE,OAAA,CAAAoE,cAAA,GAAG;EACrB,GAAGrE,SAAS;EAEZ;EACAsE,QAAQ,EAAE,EAAE;EAEZ;EACAC,QAAQ,EAAE,EAAE;EAEZ;EACAC,SAAS,EAAE,EAAE;EAEb;EACA;EACAC,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;AACA,MAAMC,uBAAuB,GAAG;EAC9B;EACA;EACAC,gBAAgB,EAAE,EAAE;EACpBC,aAAa,EAAE,EAAE;EACjBC,MAAM,EAAE,EAAE;EACVC,MAAM,EAAE,EAAE;EACVC,WAAW,EAAE,EAAE;EACfC,OAAO,EAAE,EAAE;EACXC,UAAU,EAAE,EAAE;EACdC,aAAa,EAAE,EAAE;EACjBC,QAAQ,EAAE,EAAE;EACZC,KAAK,EAAE,EAAE;EACTC,WAAW,EAAE,EAAE;EACfC,SAAS,EAAE;AACb,CAAC;AAED,MAAM;EACJ;EACAxD,UAAU;EACVwC,QAAQ;EACRC,QAAQ;EACRC,SAAS;EAET;EACAjB,OAAO;EACP;EACA,GAAGgC;AACL,CAAC,GAAGlB,cAAc;;AAElB;AACA;AACA;AACA,MAAMmB,WAAW,GAAAvF,OAAA,CAAAuF,WAAA,GAAG;EAClB,GAAGD,uBAAuB;EAC1B,GAAGb,uBAAuB;EAE1B;EACA;EACA;;EAEA;EACAe,MAAM,EAAE,EAAE;EAEVC,IAAI,EAAE,EAAE;EACRC,MAAM,EAAE,EAAE;EACVC,OAAO,EAAE,EAAE;EACXC,KAAK,EAAE,EAAE;EAET;EACAC,YAAY,EAAE,EAAE;EAEhBC,OAAO,EAAE,EAAE;EACXC,UAAU,EAAE,EAAE;EACdC,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE,EAAE;EACZC,aAAa,EAAE,EAAE;EACjBC,OAAO,EAAE,EAAE;EACXC,eAAe,EAAE,EAAE;EACnBC,QAAQ,EAAE,EAAE;EAEZ;EACAC,MAAM,EAAE,EAAE;EAEVC,MAAM,EAAE,CACN,SAAS,CACV;EAEDC,MAAM,EAAE,EAAE;EACVC,QAAQ,EAAE,EAAE;EAEZC,YAAY,EAAE;AAChB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hasReturnValue.js","names":["isNewPromiseExpression","node","type","callee","name","isVoidPromise","_node$typeParameters","typeParameters","params","undefinedKeywords","Set","hasReturnValue","throwOnNullReturn","promFilter","_node$returnType","returnType","typeAnnotation","has","value","expression","body","some","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","nde","argument","Error","exports","allBrancheshaveReturnValues","_node$returnType2","lastBodyNode","slice","test","error","message","every","consNode","hasNonEmptyResolverCall","resolverName","arguments","length","undefined","_node$params$","elements","element","right","left","expressions","subExpression","properties","property","decorators","decorator","computed","key","declarations","id","init","quasi","object","source","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","allBranches","hasReturnMethod","promiseFilter","hasReturn","Boolean","prom"],"sources":["../../src/utils/hasReturnValue.js"],"sourcesContent":["/**\n * @typedef {import('estree').Node|\n * import('@typescript-eslint/types').TSESTree.Node} ESTreeOrTypeScriptNode\n */\n\n/**\n * Checks if a node is a promise but has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n * @param {ESTreeOrTypeScriptNode|undefined|null} node\n * @returns {boolean|undefined|null}\n */\nconst isNewPromiseExpression = (node) => {\n return node && node.type === 'NewExpression' && node.callee.type === 'Identifier' &&\n node.callee.name === 'Promise';\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @returns {boolean}\n */\nconst isVoidPromise = (node) => {\n return /** @type {import('@typescript-eslint/types').TSESTree.TSTypeReference} */ (\n node\n )?.typeParameters?.params?.[0]?.type === 'TSVoidKeyword';\n};\n\nconst undefinedKeywords = new Set([\n 'TSVoidKeyword', 'TSUndefinedKeyword', 'TSNeverKeyword',\n]);\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n * @param {ESTreeOrTypeScriptNode|undefined|null} node\n * @param {boolean} [throwOnNullReturn]\n * @param {PromiseFilter} [promFilter]\n * @returns {boolean|undefined}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node, throwOnNullReturn, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n case 'MethodDefinition':\n return hasReturnValue(node.value, throwOnNullReturn, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return 'expression' in node && node.expression && (!isNewPromiseExpression(\n node.body,\n ) || !isVoidPromise(node.body)) ||\n hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode, throwOnNullReturn, promFilter);\n });\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'IfStatement': {\n return hasReturnValue(node.consequent, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.alternate, throwOnNullReturn, promFilter);\n }\n\n case 'TryStatement': {\n return hasReturnValue(node.block, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.handler && node.handler.body, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.finalizer, throwOnNullReturn, promFilter);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasReturnValue(nde, throwOnNullReturn, promFilter);\n });\n },\n );\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n if (throwOnNullReturn) {\n throw new Error('Null return');\n }\n\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\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|null|undefined} node\n * @param {PromiseFilter} promFilter\n * @returns {undefined|boolean|ESTreeOrTypeScriptNode}\n */\n// eslint-disable-next-line complexity\nconst allBrancheshaveReturnValues = (node, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n // case 'MethodDefinition':\n // return allBrancheshaveReturnValues(node.value, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return 'expression' in node && node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) ||\n allBrancheshaveReturnValues(node.body, promFilter) ||\n /** @type {import('@typescript-eslint/types').TSESTree.BlockStatement} */\n (node.body).body.some((nde) => {\n return nde.type === 'ReturnStatement';\n });\n }\n\n case 'BlockStatement': {\n const lastBodyNode = node.body.slice(-1)[0];\n return allBrancheshaveReturnValues(lastBodyNode, promFilter);\n }\n\n case 'WhileStatement':\n case 'DoWhileStatement':\n if (\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Literal}\n */\n (node.test).value === true\n ) {\n // If this is an infinite loop, we assume only one branch\n // is needed to provide a return\n return hasReturnValue(node.body, false, promFilter);\n }\n\n // Fallthrough\n case 'LabeledStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return allBrancheshaveReturnValues(node.body, promFilter);\n }\n\n case 'IfStatement': {\n return allBrancheshaveReturnValues(node.consequent, promFilter) &&\n allBrancheshaveReturnValues(node.alternate, promFilter);\n }\n\n case 'TryStatement': {\n // If `finally` returns, all return\n return node.finalizer && allBrancheshaveReturnValues(node.finalizer, promFilter) ||\n // Return in `try`/`catch` may still occur despite `finally`\n allBrancheshaveReturnValues(node.block, promFilter) &&\n (!node.handler ||\n allBrancheshaveReturnValues(node.handler && node.handler.body, promFilter)) &&\n (!node.finalizer || (() => {\n try {\n hasReturnValue(node.finalizer, true, promFilter);\n } catch (error) {\n // istanbul ignore else\n if (/** @type {Error} */ (error).message === 'Null return') {\n return false;\n }\n\n // istanbul ignore next\n throw error;\n }\n\n // As long as not an explicit empty return, then return true\n return true;\n })());\n }\n\n case 'SwitchStatement': {\n return /** @type {import('@typescript-eslint/types').TSESTree.SwitchStatement} */ (node).cases.every(\n (someCase) => {\n return !someCase.consequent.some((consNode) => {\n return consNode.type === 'BreakStatement' ||\n consNode.type === 'ReturnStatement' && consNode.argument === null;\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @callback PromiseFilter\n * @param {ESTreeOrTypeScriptNode|undefined} node\n * @returns {boolean}\n */\n\n/**\n * Avoids further checking child nodes if a nested function shadows the\n * resolver, but otherwise, if name is used (by call or passed in as an\n * argument to another function), will be considered as non-empty.\n *\n * This could check for redeclaration of the resolver, but as such is\n * unlikely, we avoid the performance cost of checking everywhere for\n * (re)declarations or assignments.\n * @param {import('@typescript-eslint/types').TSESTree.Node|null|undefined} node\n * @param {string} resolverName\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasNonEmptyResolverCall = (node, resolverName) => {\n if (!node) {\n return false;\n }\n\n // Arrow function without block\n switch (node.type) {\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'OptionalCallExpression':\n case 'CallExpression':\n return /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n node.callee\n ).name === resolverName && (\n\n // Implicit or explicit undefined\n node.arguments.length > 1 || node.arguments[0] !== undefined\n ) ||\n node.arguments.some((nde) => {\n // Being passed in to another function (which might invoke it)\n return nde.type === 'Identifier' && nde.name === resolverName ||\n\n // Handle nested items\n hasNonEmptyResolverCall(nde, resolverName);\n });\n case 'ChainExpression':\n case 'Decorator':\n case 'ExpressionStatement':\n return hasNonEmptyResolverCall(node.expression, resolverName);\n case 'ClassBody':\n case 'BlockStatement':\n return node.body.some((bodyNode) => {\n return hasNonEmptyResolverCall(bodyNode, resolverName);\n });\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n // Shadowing\n if (/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n node.params[0]\n )?.name === resolverName) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'ConditionalExpression':\n case 'IfStatement': {\n return hasNonEmptyResolverCall(node.test, resolverName) ||\n hasNonEmptyResolverCall(node.consequent, resolverName) ||\n hasNonEmptyResolverCall(node.alternate, resolverName);\n }\n\n case 'TryStatement': {\n return hasNonEmptyResolverCall(node.block, resolverName) ||\n hasNonEmptyResolverCall(node.handler && node.handler.body, resolverName) ||\n hasNonEmptyResolverCall(node.finalizer, resolverName);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n },\n );\n }\n\n case 'ArrayPattern':\n case 'ArrayExpression':\n return node.elements.some((element) => {\n return hasNonEmptyResolverCall(element, resolverName);\n });\n\n case 'AssignmentPattern':\n return hasNonEmptyResolverCall(node.right, resolverName);\n\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonEmptyResolverCall(node.left, resolverName) ||\n hasNonEmptyResolverCall(node.right, resolverName);\n }\n\n // Comma\n case 'SequenceExpression':\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonEmptyResolverCall(subExpression, resolverName);\n });\n\n case 'ObjectPattern':\n case 'ObjectExpression':\n return node.properties.some((property) => {\n return hasNonEmptyResolverCall(property, resolverName);\n });\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'ClassMethod':\n case 'MethodDefinition':\n return node.decorators && node.decorators.some((decorator) => {\n return hasNonEmptyResolverCall(decorator, resolverName);\n }) ||\n node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'ObjectProperty':\n /* eslint-disable no-fallthrough */\n // istanbul ignore next -- In Babel?\n case 'PropertyDefinition':\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'ClassProperty':\n case 'Property':\n /* eslint-enable no-fallthrough */\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'ObjectMethod':\n // @ts-expect-error\n // istanbul ignore next -- In Babel?\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n // @ts-expect-error\n node.arguments.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n\n case 'ClassExpression':\n case 'ClassDeclaration':\n return hasNonEmptyResolverCall(node.body, resolverName);\n\n case 'AwaitExpression':\n case 'SpreadElement':\n case 'UnaryExpression':\n case 'YieldExpression':\n return hasNonEmptyResolverCall(node.argument, resolverName);\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonEmptyResolverCall(node.id, resolverName) ||\n hasNonEmptyResolverCall(node.init, resolverName);\n }\n\n case 'TaggedTemplateExpression':\n return hasNonEmptyResolverCall(node.quasi, resolverName);\n\n // @ts-expect-error Babel?\n // ?.\n // istanbul ignore next -- In Babel?\n case 'OptionalMemberExpression':\n case 'MemberExpression':\n return hasNonEmptyResolverCall(node.object, resolverName) ||\n hasNonEmptyResolverCall(node.property, resolverName);\n\n // @ts-expect-error Babel?\n // istanbul ignore next -- In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonEmptyResolverCall(node.source, resolverName);\n\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.argument, resolverName);\n }\n\n /*\n // Shouldn't need to parse literals/literal components, etc.\n\n case 'Identifier':\n case 'TemplateElement':\n case 'Super':\n // Exports not relevant in this context\n */\n default:\n return false;\n }\n};\n\n/**\n * Checks if a Promise executor has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n * @param {ESTreeOrTypeScriptNode} node\n * @param {boolean} anyPromiseAsReturn\n * @param {boolean} [allBranches]\n * @returns {boolean}\n */\nconst hasValueOrExecutorHasNonEmptyResolveValue = (node, anyPromiseAsReturn, allBranches) => {\n const hasReturnMethod = allBranches ?\n /**\n * @param {ESTreeOrTypeScriptNode} nde\n * @param {PromiseFilter} promiseFilter\n * @returns {boolean}\n */\n (nde, promiseFilter) => {\n let hasReturn;\n try {\n hasReturn = hasReturnValue(nde, true, promiseFilter);\n } catch (error) {\n // istanbul ignore else\n if (/** @type {Error} */ (error).message === 'Null return') {\n return false;\n }\n\n // istanbul ignore next\n throw error;\n }\n\n // `hasReturn` check needed since `throw` treated as valid return by\n // `allBrancheshaveReturnValues`\n return Boolean(hasReturn && allBrancheshaveReturnValues(nde, promiseFilter));\n } :\n /**\n * @param {ESTreeOrTypeScriptNode} nde\n * @param {PromiseFilter} promiseFilter\n * @returns {boolean}\n */\n (nde, promiseFilter) => {\n return Boolean(hasReturnValue(nde, false, promiseFilter));\n };\n\n return hasReturnMethod(node, (prom) => {\n if (anyPromiseAsReturn) {\n return true;\n }\n\n if (isVoidPromise(prom)) {\n return false;\n }\n\n const {\n params,\n body,\n } =\n /**\n * @type {import('@typescript-eslint/types').TSESTree.FunctionExpression|\n * import('@typescript-eslint/types').TSESTree.ArrowFunctionExpression}\n */ (\n /** @type {import('@typescript-eslint/types').TSESTree.NewExpression} */ (\n prom\n ).arguments[0]\n ) || {};\n\n if (!params?.length) {\n return false;\n }\n\n const {\n name: resolverName,\n } = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n params[0]\n );\n\n return hasNonEmptyResolverCall(body, resolverName);\n });\n};\n\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n};\n"],"mappings":"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"}