eslint-plugin-jsdoc 63.0.10 → 63.0.11

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 (173) hide show
  1. package/dist/WarnSettings.cjs +1 -8
  2. package/dist/WarnSettings.cjs.map +1 -1
  3. package/dist/alignTransform.cjs +6 -10
  4. package/dist/alignTransform.cjs.map +1 -1
  5. package/dist/buildForbidRuleDefinition.cjs +3 -10
  6. package/dist/buildForbidRuleDefinition.cjs.map +1 -1
  7. package/dist/buildRejectOrPreferRuleDefinition.cjs +7 -14
  8. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
  9. package/dist/defaultTagOrder.cjs +1 -8
  10. package/dist/defaultTagOrder.cjs.map +1 -1
  11. package/dist/exportParser.cjs +6 -14
  12. package/dist/exportParser.cjs.map +1 -1
  13. package/dist/generateDocs.cjs +36 -44
  14. package/dist/generateDocs.cjs.map +1 -1
  15. package/dist/generateOptions.cjs +15 -18
  16. package/dist/generateOptions.cjs.map +1 -1
  17. package/dist/generateRule.cjs +24 -24
  18. package/dist/generateRule.cjs.map +1 -1
  19. package/dist/generateRuleTypes.cjs +6 -9
  20. package/dist/generateRuleTypes.cjs.map +1 -1
  21. package/dist/getDefaultTagStructureForMode.cjs +1 -8
  22. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  23. package/dist/getJsdocProcessorPlugin.cjs +20 -28
  24. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  25. package/dist/index-cjs.cjs +152 -159
  26. package/dist/index-cjs.cjs.map +1 -1
  27. package/dist/index-esm.cjs +16 -27
  28. package/dist/index-esm.cjs.map +1 -1
  29. package/dist/index.cjs +159 -172
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/iterateJsdoc.cjs +22 -32
  32. package/dist/iterateJsdoc.cjs.map +1 -1
  33. package/dist/jsdocUtils.cjs +18 -86
  34. package/dist/jsdocUtils.cjs.map +1 -1
  35. package/dist/rules/checkAccess.cjs +2 -10
  36. package/dist/rules/checkAccess.cjs.map +1 -1
  37. package/dist/rules/checkAlignment.cjs +2 -10
  38. package/dist/rules/checkAlignment.cjs.map +1 -1
  39. package/dist/rules/checkExamples.cjs +6 -15
  40. package/dist/rules/checkExamples.cjs.map +1 -1
  41. package/dist/rules/checkIndentation.cjs +2 -9
  42. package/dist/rules/checkIndentation.cjs.map +1 -1
  43. package/dist/rules/checkLineAlignment.cjs +6 -14
  44. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  45. package/dist/rules/checkParamNames.cjs +2 -9
  46. package/dist/rules/checkParamNames.cjs.map +1 -1
  47. package/dist/rules/checkPropertyNames.cjs +2 -9
  48. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  49. package/dist/rules/checkSyntax.cjs +2 -10
  50. package/dist/rules/checkSyntax.cjs.map +1 -1
  51. package/dist/rules/checkTagNames.cjs +4 -11
  52. package/dist/rules/checkTagNames.cjs.map +1 -1
  53. package/dist/rules/checkTemplateNames.cjs +12 -21
  54. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  55. package/dist/rules/checkTypes.cjs +4 -10
  56. package/dist/rules/checkTypes.cjs.map +1 -1
  57. package/dist/rules/checkValues.cjs +9 -17
  58. package/dist/rules/checkValues.cjs.map +1 -1
  59. package/dist/rules/convertToJsdocComments.cjs +13 -19
  60. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  61. package/dist/rules/emptyTags.cjs +2 -10
  62. package/dist/rules/emptyTags.cjs.map +1 -1
  63. package/dist/rules/escapeInlineTags.cjs +2 -10
  64. package/dist/rules/escapeInlineTags.cjs.map +1 -1
  65. package/dist/rules/implementsOnClasses.cjs +2 -10
  66. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  67. package/dist/rules/importsAsDependencies.cjs +12 -20
  68. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  69. package/dist/rules/informativeDocs.cjs +4 -12
  70. package/dist/rules/informativeDocs.cjs.map +1 -1
  71. package/dist/rules/linesBeforeBlock.cjs +2 -9
  72. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  73. package/dist/rules/matchDescription.cjs +2 -9
  74. package/dist/rules/matchDescription.cjs.map +1 -1
  75. package/dist/rules/matchName.cjs +2 -10
  76. package/dist/rules/matchName.cjs.map +1 -1
  77. package/dist/rules/multilineBlocks.cjs +2 -9
  78. package/dist/rules/multilineBlocks.cjs.map +1 -1
  79. package/dist/rules/noBadBlocks.cjs +4 -11
  80. package/dist/rules/noBadBlocks.cjs.map +1 -1
  81. package/dist/rules/noBlankBlockDescriptions.cjs +2 -10
  82. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  83. package/dist/rules/noBlankBlocks.cjs +2 -10
  84. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  85. package/dist/rules/noDefaults.cjs +2 -10
  86. package/dist/rules/noDefaults.cjs.map +1 -1
  87. package/dist/rules/noMissingSyntax.cjs +2 -9
  88. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  89. package/dist/rules/noMultiAsterisks.cjs +2 -10
  90. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  91. package/dist/rules/noRestrictedSyntax.cjs +2 -9
  92. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  93. package/dist/rules/noTypes.cjs +2 -9
  94. package/dist/rules/noTypes.cjs.map +1 -1
  95. package/dist/rules/noUndefinedTypes.cjs +13 -21
  96. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  97. package/dist/rules/preferImportTag.cjs +21 -28
  98. package/dist/rules/preferImportTag.cjs.map +1 -1
  99. package/dist/rules/requireAsteriskPrefix.cjs +2 -10
  100. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  101. package/dist/rules/requireDescription.cjs +2 -9
  102. package/dist/rules/requireDescription.cjs.map +1 -1
  103. package/dist/rules/requireDescriptionCompleteSentence.cjs +7 -15
  104. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  105. package/dist/rules/requireExample.cjs +2 -10
  106. package/dist/rules/requireExample.cjs.map +1 -1
  107. package/dist/rules/requireFileOverview.cjs +2 -10
  108. package/dist/rules/requireFileOverview.cjs.map +1 -1
  109. package/dist/rules/requireHyphenBeforeParamDescription.cjs +2 -10
  110. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  111. package/dist/rules/requireJsdoc.cjs +17 -25
  112. package/dist/rules/requireJsdoc.cjs.map +1 -1
  113. package/dist/rules/requireParam.cjs +2 -9
  114. package/dist/rules/requireParam.cjs.map +1 -1
  115. package/dist/rules/requireParamDescription.cjs +2 -10
  116. package/dist/rules/requireParamDescription.cjs.map +1 -1
  117. package/dist/rules/requireParamName.cjs +2 -10
  118. package/dist/rules/requireParamName.cjs.map +1 -1
  119. package/dist/rules/requireParamType.cjs +2 -10
  120. package/dist/rules/requireParamType.cjs.map +1 -1
  121. package/dist/rules/requireProperty.cjs +2 -10
  122. package/dist/rules/requireProperty.cjs.map +1 -1
  123. package/dist/rules/requirePropertyDescription.cjs +2 -10
  124. package/dist/rules/requirePropertyDescription.cjs.map +1 -1
  125. package/dist/rules/requirePropertyName.cjs +2 -10
  126. package/dist/rules/requirePropertyName.cjs.map +1 -1
  127. package/dist/rules/requirePropertyType.cjs +2 -10
  128. package/dist/rules/requirePropertyType.cjs.map +1 -1
  129. package/dist/rules/requireRejects.cjs +2 -9
  130. package/dist/rules/requireRejects.cjs.map +1 -1
  131. package/dist/rules/requireReturns.cjs +4 -11
  132. package/dist/rules/requireReturns.cjs.map +1 -1
  133. package/dist/rules/requireReturnsCheck.cjs +8 -15
  134. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  135. package/dist/rules/requireReturnsDescription.cjs +2 -10
  136. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  137. package/dist/rules/requireReturnsType.cjs +2 -10
  138. package/dist/rules/requireReturnsType.cjs.map +1 -1
  139. package/dist/rules/requireTags.cjs +2 -9
  140. package/dist/rules/requireTags.cjs.map +1 -1
  141. package/dist/rules/requireTemplate.cjs +5 -13
  142. package/dist/rules/requireTemplate.cjs.map +1 -1
  143. package/dist/rules/requireThrows.cjs +2 -9
  144. package/dist/rules/requireThrows.cjs.map +1 -1
  145. package/dist/rules/requireYields.cjs +2 -9
  146. package/dist/rules/requireYields.cjs.map +1 -1
  147. package/dist/rules/requireYieldsCheck.cjs +2 -9
  148. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  149. package/dist/rules/sortTags.cjs +4 -12
  150. package/dist/rules/sortTags.cjs.map +1 -1
  151. package/dist/rules/tagLines.cjs +2 -9
  152. package/dist/rules/tagLines.cjs.map +1 -1
  153. package/dist/rules/textEscaping.cjs +2 -9
  154. package/dist/rules/textEscaping.cjs.map +1 -1
  155. package/dist/rules/tsMethodSignatureStyle.cjs +10 -18
  156. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -1
  157. package/dist/rules/tsNoEmptyObjectType.cjs +5 -13
  158. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -1
  159. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +8 -16
  160. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -1
  161. package/dist/rules/tsPreferFunctionType.cjs +8 -16
  162. package/dist/rules/tsPreferFunctionType.cjs.map +1 -1
  163. package/dist/rules/typeFormatting.cjs +9 -17
  164. package/dist/rules/typeFormatting.cjs.map +1 -1
  165. package/dist/rules/validTypes.cjs +10 -18
  166. package/dist/rules/validTypes.cjs.map +1 -1
  167. package/dist/tagNames.cjs +4 -9
  168. package/dist/tagNames.cjs.map +1 -1
  169. package/dist/utils/hasReturnValue.cjs +1 -8
  170. package/dist/utils/hasReturnValue.cjs.map +1 -1
  171. package/package.json +21 -21
  172. package/src/rules/checkTemplateNames.js +0 -1
  173. package/src/rules/requireJsdoc.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"noTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","removeType","tokens","postTag","type","_default","exports","iterateJsdoc","node","utils","isIteratingFunctionOrVariable","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","propertyTags","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context","module"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('comment-parser').Line} line\n */\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n node,\n utils,\n}) => {\n if (!utils.isIteratingFunctionOrVariable() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n\n if (node?.type === 'ClassDeclaration') {\n const propertyTags = utils.getPresentTags([\n 'prop', 'property',\n ]);\n for (const tag of propertyTags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag} in the supplied context.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n }\n}, {\n contextDefaults: [\n 'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression', 'TSDeclareFunction',\n // Add this to above defaults\n 'TSMethodSignature', 'ClassDeclaration',\n ],\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns` (redundant with TypeScript).',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n description: `Set this to an array of strings representing the AST context (or an object with\noptional \\`context\\` and \\`comment\\` properties) where you wish the rule to be applied.\n\n\\`context\\` defaults to \\`any\\` and \\`comment\\` defaults to no specific comment context.\n\nOverrides the default contexts (\\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`, \\`TSDeclareFunction\\`, \\`TSMethodSignature\\`,\n\\`ClassDeclaration\\`). Set to \\`\"any\"\\` if you want\nthe rule to apply to any JSDoc block throughout your files (as is necessary\nfor finding function blocks not attached to a function declaration or\nexpression, i.e., \\`@callback\\` or \\`@function\\` (or its aliases \\`@func\\` or\n\\`@method\\`) (including those associated with an \\`@interface\\`).\n\nSee the [\"AST and Selectors\"](../advanced.md#ast-and-selectors)\nsection of our Advanced docs for more on the expected format.`,\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9C;AACA;AACA;AACA,MAAMG,UAAU,GAAGA,CAAC;EAClBC;AACF,CAAC,KAAK;EACJA,MAAM,CAACC,OAAO,GAAG,EAAE;EACnBD,MAAM,CAACE,IAAI,GAAG,EAAE;AAClB,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAN,OAAA,GAEa,IAAAO,qBAAY,EAAC,CAAC;EAC3BC,IAAI;EACJC;AACF,CAAC,KAAK;EACJ,IAAI,CAACA,KAAK,CAACC,6BAA6B,CAAC,CAAC,IAAI,CAACD,KAAK,CAACE,iBAAiB,CAAC,CAAC,EAAE;IACxE;EACF;EAEA,MAAMC,IAAI,GAAGH,KAAK,CAACI,cAAc,CAAC,CAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAChD,CAAC;EAEF,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;IACtB,IAAIE,GAAG,CAACV,IAAI,EAAE;MACZK,KAAK,CAACM,WAAW,CAAC,+BAA+BD,GAAG,CAACA,GAAG,GAAG,EAAEA,GAAG,EAAE,MAAM;QACtE,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;UAC/Bf,UAAU,CAACe,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;EAEA,IAAIR,IAAI,EAAEJ,IAAI,KAAK,kBAAkB,EAAE;IACrC,MAAMa,YAAY,GAAGR,KAAK,CAACI,cAAc,CAAC,CACxC,MAAM,EAAE,UAAU,CACnB,CAAC;IACF,KAAK,MAAMC,GAAG,IAAIG,YAAY,EAAE;MAC9B,IAAIH,GAAG,CAACV,IAAI,EAAE;QACZK,KAAK,CAACM,WAAW,CAAC,+BAA+BD,GAAG,CAACA,GAAG,2BAA2B,EAAEA,GAAG,EAAE,MAAM;UAC9F,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;YAC/Bf,UAAU,CAACe,MAAM,CAAC;UACpB;QACF,CAAC,CAAC;MACJ;IACF;EACF;AACF,CAAC,EAAE;EACDE,eAAe,EAAE,CACf,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB;EAC3F;EACA,mBAAmB,EAAE,kBAAkB,CACxC;EACDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,2FAA2F;MACxGC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRN,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;UAClDO,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEzB,IAAI,EAAE;YACR,CAAC,EACD;cACEqB,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACP1B,IAAI,EAAE;gBACR,CAAC;gBACD2B,OAAO,EAAE;kBACP3B,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA4B,MAAA,CAAA1B,OAAA,GAAAA,OAAA,CAAAN,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"noTypes.cjs","names":[],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {import('comment-parser').Line} line\n */\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n node,\n utils,\n}) => {\n if (!utils.isIteratingFunctionOrVariable() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n\n if (node?.type === 'ClassDeclaration') {\n const propertyTags = utils.getPresentTags([\n 'prop', 'property',\n ]);\n for (const tag of propertyTags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag} in the supplied context.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n }\n}, {\n contextDefaults: [\n 'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression', 'TSDeclareFunction',\n // Add this to above defaults\n 'TSMethodSignature', 'ClassDeclaration',\n ],\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns` (redundant with TypeScript).',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-types.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n description: `Set this to an array of strings representing the AST context (or an object with\noptional \\`context\\` and \\`comment\\` properties) where you wish the rule to be applied.\n\n\\`context\\` defaults to \\`any\\` and \\`comment\\` defaults to no specific comment context.\n\nOverrides the default contexts (\\`ArrowFunctionExpression\\`, \\`FunctionDeclaration\\`,\n\\`FunctionExpression\\`, \\`TSDeclareFunction\\`, \\`TSMethodSignature\\`,\n\\`ClassDeclaration\\`). Set to \\`\"any\"\\` if you want\nthe rule to apply to any JSDoc block throughout your files (as is necessary\nfor finding function blocks not attached to a function declaration or\nexpression, i.e., \\`@callback\\` or \\`@function\\` (or its aliases \\`@func\\` or\n\\`@method\\`) (including those associated with an \\`@interface\\`).\n\nSee the [\"AST and Selectors\"](../advanced.md#ast-and-selectors)\nsection of our Advanced docs for more on the expected format.`,\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB;;AAE7C;AACA;AACA;AACA,MAAM,UAAU,GAAG,CAAC;EAClB;AACF,CAAC,KAAK;EACJ,MAAM,CAAC,OAAO,GAAG,EAAE;EACnB,MAAM,CAAC,IAAI,GAAG,EAAE;AAClB,CAAC;AAED,eAAe,YAAY,CAAC,CAAC;EAC3B,IAAI;EACJ;AACF,CAAC,KAAK;EACJ,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,EAAE;IACxE;EACF;EAEA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,CAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAChD,CAAC;EAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;IACtB,IAAI,GAAG,CAAC,IAAI,EAAE;MACZ,KAAK,CAAC,WAAW,CAAC,+BAA+B,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM;QACtE,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;UAC/B,UAAU,CAAC,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;EAEA,IAAI,IAAI,EAAE,IAAI,KAAK,kBAAkB,EAAE;IACrC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,CACxC,MAAM,EAAE,UAAU,CACnB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE;MAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;QACZ,KAAK,CAAC,WAAW,CAAC,+BAA+B,GAAG,CAAC,GAAG,2BAA2B,EAAE,GAAG,EAAE,MAAM;UAC9F,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YAC/B,UAAU,CAAC,MAAM,CAAC;UACpB;QACF,CAAC,CAAC;MACJ;IACF;EACF;AACF,CAAC,EAAE;EACD,eAAe,EAAE,CACf,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB;EAC3F;EACA,mBAAmB,EAAE,kBAAkB,CACxC;EACD,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,2FAA2F;MACxG,GAAG,EAAE;IACP,CAAC;IACD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CACN;MACE,oBAAoB,EAAE,KAAK;MAC3B,UAAU,EAAE;QACV,QAAQ,EAAE;UACR,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;UAClD,KAAK,EAAE;YACL,KAAK,EAAE,CACL;cACE,IAAI,EAAE;YACR,CAAC,EACD;cACE,oBAAoB,EAAE,KAAK;cAC3B,UAAU,EAAE;gBACV,OAAO,EAAE;kBACP,IAAI,EAAE;gBACR,CAAC;gBACD,OAAO,EAAE;kBACP,IAAI,EAAE;gBACR;cACF,CAAC;cACD,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACD,IAAI,EAAE;QACR;MACF,CAAC;MACD,IAAI,EAAE;IACR,CAAC,CACF;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,7 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc.cjs"));
8
- var _jsdocUtils = require("../jsdocUtils.cjs");
9
- var _jsdoccomment = require("@es-joy/jsdoccomment");
10
- var _parseImportsExports = require("parse-imports-exports");
11
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
1
+ import iterateJsdoc, { parseComment } from '../iterateJsdoc.js';
2
+ import { getDocumentNamepathDefiningTags, getJSDocCommentBlocks } from '../jsdocUtils.js';
3
+ import { getJSDocComment, parse as parseType, traverse, tryParse as tryParseType } from '@es-joy/jsdoccomment';
4
+ import { parseImportsExports } from 'parse-imports-exports';
12
5
  const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function', 'Intl'];
13
6
  const globalTypes = ['globalThis', 'global', 'window', 'self'];
14
7
  const iterableIterator = ['Iterable', 'Iterator', 'IteratorObject'];
@@ -23,7 +16,7 @@ const typescriptGlobals = [...iterableIterator,
23
16
  const stripPseudoTypes = str => {
24
17
  return str && str.replace(/(?:\.|<>|\.<>|\[\])$/v, '');
25
18
  };
26
- var _default = exports.default = (0, _iterateJsdoc.default)(({
19
+ export default iterateJsdoc(({
27
20
  context,
28
21
  node,
29
22
  report,
@@ -80,13 +73,13 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
80
73
  }).filter(Boolean);
81
74
  }
82
75
  const allComments = sourceCode.getAllComments();
83
- const comments = (0, _jsdocUtils.getJSDocCommentBlocks)(sourceCode);
76
+ const comments = getJSDocCommentBlocks(sourceCode);
84
77
  const globals = allComments.filter(comment => {
85
78
  return /^\s*globals/v.test(comment.value);
86
79
  }).flatMap(commentNode => {
87
80
  return commentNode.value.replace(/^\s*globals/v, '').trim().split(/,\s*/v);
88
81
  }).concat(Object.keys(context.languageOptions.globals ?? []));
89
- const typedefs = (0, _jsdocUtils.getDocumentNamepathDefiningTags)(sourceCode);
82
+ const typedefs = getDocumentNamepathDefiningTags(sourceCode);
90
83
  const typedefDeclarations = typedefs.map(tag => {
91
84
  return tag.name;
92
85
  });
@@ -104,7 +97,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
104
97
  } = tag;
105
98
  const typePart = type ? `{${type}} ` : '';
106
99
  const imprt = 'import ' + (description ? `${typePart}${name} ${description}` : `${typePart}${name}`);
107
- const importsExports = (0, _parseImportsExports.parseImportsExports)(imprt.trim());
100
+ const importsExports = parseImportsExports(imprt.trim());
108
101
  const types = [];
109
102
  const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];
110
103
  if (namedImports) {
@@ -139,11 +132,11 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
139
132
  * @returns {import('comment-parser').Spec[]}
140
133
  */
141
134
  const getTemplateTags = function (ancestorNode) {
142
- const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, ancestorNode, settings);
135
+ const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);
143
136
  if (!commentNode) {
144
137
  return [];
145
138
  }
146
- const jsdc = (0, _iterateJsdoc.parseComment)(commentNode, '');
139
+ const jsdc = parseComment(commentNode, '');
147
140
  return jsdc.tags.filter(tag => {
148
141
  return tag.tag === 'template';
149
142
  });
@@ -406,7 +399,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
406
399
  try {
407
400
  const potentialType = tag[(/** @type {"type"|"name"|"namepathOrURL"} */propertyName)];
408
401
  return {
409
- parsedType: mode === 'permissive' ? (0, _jsdoccomment.tryParse)(/** @type {string} */potentialType) : (0, _jsdoccomment.parse)(/** @type {string} */potentialType, mode),
402
+ parsedType: mode === 'permissive' ? tryParseType(/** @type {string} */potentialType) : parseType(/** @type {string} */potentialType, mode),
410
403
  tag
411
404
  };
412
405
  } catch {
@@ -446,7 +439,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
446
439
  tag
447
440
  } of tagsWithTypes) {
448
441
  // eslint-disable-next-line complexity -- Refactor
449
- (0, _jsdoccomment.traverse)(parsedType, (nde, parentNode) => {
442
+ traverse(parsedType, (nde, parentNode) => {
450
443
  /**
451
444
  * @type {import('jsdoc-type-pratt-parser').NameResult & {
452
445
  * _parent?: import('jsdoc-type-pratt-parser').NonRootResult
@@ -541,7 +534,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
541
534
  return /^\*(?!\*)/v.test(comment.value);
542
535
  }).map(commentNode => {
543
536
  return {
544
- doc: (0, _iterateJsdoc.parseComment)(commentNode, ''),
537
+ doc: parseComment(commentNode, ''),
545
538
  loc: commentNode.loc
546
539
  };
547
540
  });
@@ -612,5 +605,4 @@ importing types unless used in code.`,
612
605
  type: 'suggestion'
613
606
  }
614
607
  });
615
- module.exports = exports.default;
616
608
  //# sourceMappingURL=noUndefinedTypes.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.cjs","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdocUtils","_jsdoccomment","_parseImportsExports","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extraTypes","globalTypes","iterableIterator","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","state","utils","foundTypedefValues","scopeManager","globalScope","checkUsedTypedefs","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","allComments","getAllComments","comments","getJSDocCommentBlocks","globals","comment","test","value","flatMap","commentNode","trim","split","concat","languageOptions","typedefs","getDocumentNamepathDefiningTags","typedefDeclarations","tag","name","importTags","doc","tags","description","type","typePart","imprt","importsExports","parseImportsExports","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdc","parseComment","templateTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","getChildScopes","sc","childScope","variables","add","grandChildScope","upper","getNamespaceTypes","prefix","moduleDeclaration","body","item","declaration","id","prop","key","propName","nestedName","imports","closedTypes","tsModuleVariables","scopes","allDefinedTypes","identifiers","globalItem","property","init","callee","methodOrProp","programBody","ast","statement","expression","left","object","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","definedNamesAndNamepaths","isNameOrNamepathDefiningTag","tagsWithTypes","traverse","nde","parentNode","_parent","val","currNode","includes","right","structuredTypes","rootNamespace","isNamespaceValid","Array","isArray","typeParameters","some","typeParam","element","markVariableAsUsed","exit","loc","typedef","message","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getDocumentNamepathDefiningTags,\n getJSDocCommentBlocks,\n} from '../jsdocUtils.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport {\n parseImportsExports,\n} from 'parse-imports-exports';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function', 'Intl',\n];\n\nconst globalTypes = [\n 'globalThis', 'global', 'window', 'self',\n];\n\nconst iterableIterator = [\n 'Iterable',\n 'Iterator',\n 'IteratorObject',\n];\n\nconst typescriptGlobals = [\n ...iterableIterator,\n\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n}) => {\n /** @type {string[]} */\n const foundTypedefValues = [];\n\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * checkUsedTypedefs: boolean\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean,\n * }}\n */ {\n checkUsedTypedefs = false,\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n mode,\n preferredTypes,\n structuredTags,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const allComments = sourceCode.getAllComments();\n const comments = getJSDocCommentBlocks(sourceCode);\n\n const globals = allComments\n .filter((comment) => {\n return (/^\\s*globals/v).test(comment.value);\n }).flatMap((commentNode) => {\n return commentNode.value.replace(/^\\s*globals/v, '').trim().split(/,\\s*/v);\n }).concat(Object.keys(context.languageOptions.globals ?? []));\n\n const typedefs = getDocumentNamepathDefiningTags(sourceCode);\n\n const typedefDeclarations = typedefs\n .map((tag) => {\n return tag.name;\n });\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n description,\n name,\n type,\n } = tag;\n const typePart = type ? `{${type}} ` : '';\n const imprt = 'import ' + (description ?\n `${typePart}${name} ${description}` :\n `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt.trim());\n\n const types = [];\n const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];\n if (namedImports) {\n if (namedImports.default) {\n types.push(namedImports.default);\n }\n\n if (namedImports.names) {\n types.push(...Object.keys(namedImports.names));\n }\n }\n\n const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];\n if (namespaceImports) {\n if (namespaceImports.namespace) {\n types.push(namespaceImports.namespace);\n }\n\n if (namespaceImports.default) {\n types.push(namespaceImports.default);\n }\n }\n\n return types;\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdc = parseComment(commentNode, '');\n\n return jsdc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n // We err on the side of being too aggressive; checking only\n // present tags is not sufficient\n comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'template';\n });\n });\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set();\n\n let scp = scope;\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} sc\n */\n const getChildScopes = (sc) => {\n if (sc) {\n // We must check child scopes because when multiple nodes find\n // the same comment block, only one node is reported by our code,\n // and it can be the children which are not reported.\n for (const childScope of sc.childScopes) {\n for (const {\n name,\n } of childScope.variables) {\n result.add(name);\n }\n\n for (const grandChildScope of childScope.childScopes) {\n getChildScopes(grandChildScope);\n }\n }\n }\n };\n\n getChildScopes(scp);\n\n while (scp) {\n for (const {\n name,\n } of scp.variables) {\n result.add(name);\n }\n\n scp = scp.upper;\n }\n\n return result;\n };\n\n /**\n * Recursively extracts types from a namespace declaration.\n * @param {string} prefix - The namespace prefix (e.g., \"MyNamespace\" or \"Outer.Inner\").\n * @param {import('@typescript-eslint/types').TSESTree.TSModuleDeclaration} moduleDeclaration - The module declaration node.\n * @returns {string[]} Array of fully qualified type names.\n */\n const getNamespaceTypes = (prefix, moduleDeclaration) => {\n /* c8 ignore next 3 -- Guard for ambient modules without body. */\n if (!moduleDeclaration.body || moduleDeclaration.body.type !== 'TSModuleBlock') {\n return [];\n }\n\n return moduleDeclaration.body.body.flatMap((item) => {\n /** @type {import('@typescript-eslint/types').TSESTree.ProgramStatement | import('@typescript-eslint/types').TSESTree.NamedExportDeclarations | null} */\n let declaration = item;\n\n if (item.type === 'ExportNamedDeclaration' && item.declaration) {\n declaration = item.declaration;\n }\n\n if (declaration.type === 'TSTypeAliasDeclaration' || declaration.type === 'ClassDeclaration') {\n /* c8 ignore next 4 -- Guard for anonymous class declarations. */\n if (!declaration.id) {\n return [];\n }\n\n return [\n `${prefix}.${declaration.id.name}`,\n ];\n }\n\n if (declaration.type === 'TSInterfaceDeclaration') {\n return [\n `${prefix}.${declaration.id.name}`,\n ...declaration.body.body.map((prop) => {\n // Only `TSPropertySignature` and `TSMethodSignature` have 'key'.\n if (prop.type !== 'TSPropertySignature' && prop.type !== 'TSMethodSignature') {\n return '';\n }\n\n // Key can be computed or a literal, only handle Identifier.\n if (prop.key.type !== 'Identifier') {\n return '';\n }\n\n const propName = prop.key.name;\n /* c8 ignore next -- `propName` is always truthy for Identifiers. */\n return propName ? `${prefix}.${declaration.id.name}.${propName}` : '';\n }).filter(Boolean),\n ];\n }\n\n // Handle nested namespaces.\n if (declaration.type === 'TSModuleDeclaration') {\n /* c8 ignore next -- Nested string-literal modules aren't valid TS syntax. */\n const nestedName = declaration.id?.type === 'Identifier' ? declaration.id.name : '';\n /* c8 ignore next 3 -- Guard. */\n if (!nestedName) {\n return [];\n }\n\n return [\n `${prefix}.${nestedName}`,\n ...getNamespaceTypes(`${prefix}.${nestedName}`, declaration),\n ];\n }\n\n // Fallback for unhandled declaration types (e.g., TSEnumDeclaration, FunctionDeclaration, etc.).\n return [];\n });\n };\n\n /**\n * We treat imports differently as we can't introspect their children.\n * @type {string[]}\n */\n const imports = [];\n\n /** @type {Set<string>} */\n const closedTypes = new Set();\n\n const tsModuleVariables = scopeManager.scopes.filter(({\n type,\n }) => {\n // @ts-expect-error TS\n return type === 'tsModule';\n }).flatMap(({\n variables,\n }) => {\n return variables.map(({\n name,\n }) => {\n return name;\n });\n });\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).flatMap(({\n identifiers,\n name,\n }) => {\n const globalItem = /** @type {import('estree').Identifier & {parent: import('@typescript-eslint/types').TSESTree.Node}} */ (\n identifiers?.[0]\n )?.parent;\n switch (globalItem?.type) {\n case 'ClassDeclaration':\n closedTypes.add(name);\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.PropertyDefinition} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'ImportDefaultSpecifier':\n case 'ImportNamespaceSpecifier':\n case 'ImportSpecifier':\n imports.push(name);\n break;\n case 'TSInterfaceDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'TSModuleDeclaration':\n closedTypes.add(name);\n return [\n name,\n ...getNamespaceTypes(name, globalItem),\n ];\n case 'VariableDeclarator':\n if (/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.CallExpression} */ (\n globalItem?.init\n )?.callee)?.name === 'require'\n ) {\n imports.push(/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n globalItem.id\n ).name);\n break;\n }\n\n // Module scope names are also defined\n return [\n name,\n ];\n }\n\n return [\n name,\n ];\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(tsModuleVariables)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat((() => {\n // Other methods are not in scope, but we need them, and we grab them here\n if (node?.type === 'MethodDefinition') {\n return /** @type {import('estree').ClassBody} */ (node.parent).body.flatMap((methodOrProp) => {\n if (methodOrProp.type === 'MethodDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n\n if (methodOrProp.type === 'PropertyDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n /* c8 ignore next 2 -- Not yet built */\n\n return '';\n }).filter(Boolean);\n }\n\n return [];\n })())\n .concat((() => {\n // Detect static property assignments like `MyClass.Prop = ...`\n const programBody = /** @type {import('@typescript-eslint/types').TSESTree.Program} */ (\n sourceCode.ast\n ).body;\n\n return programBody.flatMap((statement) => {\n if (\n statement.type === 'ExpressionStatement' &&\n statement.expression.type === 'AssignmentExpression' &&\n statement.expression.left.type === 'MemberExpression' &&\n statement.expression.left.object.type === 'Identifier' &&\n statement.expression.left.property.type === 'Identifier' &&\n closedTypes.has(statement.expression.left.object.name)\n ) {\n return [\n `${statement.expression.left.object.name}.${statement.expression.left.property.name}`,\n ];\n }\n\n return [];\n });\n })())\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 3 */\n sourceCode.getScope(node)) ||\n // @ts-expect-error ESLint 8\n context.getScope()\n )))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const definedNamesAndNamepaths = new Set(utils.filterTags(({\n tag,\n }) => {\n return utils.isNameOrNamepathDefiningTag(tag);\n }).map(({\n name,\n }) => {\n return name;\n }));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n parsedType,\n tag,\n } of tagsWithTypes) {\n // eslint-disable-next-line complexity -- Refactor\n traverse(parsedType, (nde, parentNode) => {\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */\n // eslint-disable-next-line canonical/id-match -- Avoid clashes\n (nde)._parent = parentNode;\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n let val = value;\n\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult|undefined} */\n let currNode = nde;\n do {\n currNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (currNode)._parent;\n if (\n // Avoid appending for imports and globals since we don't want to\n // check their properties which may or may not exist\n !imports.includes(val) && !globals.includes(val) &&\n !importTags.includes(val) &&\n !extraTypes.includes(val) &&\n !typedefDeclarations.includes(val) &&\n !globalTypes.includes(val) &&\n currNode && 'right' in currNode &&\n currNode.right?.type === 'JsdocTypeProperty'\n ) {\n val = val + '.' + currNode.right.value;\n }\n } while (currNode?.type === 'JsdocTypeNamePath');\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n const rootNamespace = val.split('.')[0];\n const isNamespaceValid = (definedTypes.includes(rootNamespace) || allDefinedTypes.has(rootNamespace)) &&\n !closedTypes.has(rootNamespace);\n\n if (!allDefinedTypes.has(val) &&\n !definedNamesAndNamepaths.has(val) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(val)) && !isNamespaceValid\n ) {\n const parent =\n /**\n * @type {import('jsdoc-type-pratt-parser').RootResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (nde)._parent;\n if (parent?.type === 'JsdocTypeTypeParameter') {\n return;\n }\n\n if (parent?.type === 'JsdocTypeFunction' &&\n /** @type {import('jsdoc-type-pratt-parser').FunctionResult} */\n (parent)?.typeParameters?.some((typeParam) => {\n return value === typeParam.name.value;\n })\n ) {\n return;\n }\n\n if (parent?.type === 'JsdocTypeInfer' && value === parent.element.value) {\n allDefinedTypes.add(value);\n return;\n }\n\n if (!disableReporting) {\n report(`The type '${val}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(val)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(val);\n /* c8 ignore next 4 */\n } else {\n // @ts-expect-error ESLint 8\n context.markVariableAsUsed(val);\n }\n }\n\n if (checkUsedTypedefs && typedefDeclarations.includes(val)) {\n foundTypedefValues.push(val);\n }\n }\n });\n }\n\n state.foundTypedefValues = foundTypedefValues;\n}, {\n // We use this method rather than checking at end of handler above because\n // in that case, it is invoked too many times and would thus report errors\n // too many times.\n exit ({\n context,\n state,\n utils,\n }) {\n const {\n checkUsedTypedefs = false,\n } = context.options[0] || {};\n\n if (!checkUsedTypedefs) {\n return;\n }\n\n const allComments = context.sourceCode.getAllComments();\n const comments = allComments\n .filter((comment) => {\n return (/^\\*(?!\\*)/v).test(comment.value);\n })\n .map((commentNode) => {\n return {\n doc: parseComment(commentNode, ''),\n loc: commentNode.loc,\n };\n });\n const typedefs = comments\n .flatMap(({\n doc,\n loc,\n }) => {\n const tags = doc.tags.filter(({\n tag,\n }) => {\n return utils.isNameOrNamepathDefiningTag(tag);\n });\n if (!tags.length) {\n return [];\n }\n\n return {\n loc,\n tags,\n };\n });\n\n for (const typedef of typedefs) {\n if (\n !state.foundTypedefValues.includes(typedef.tags[0].name)\n ) {\n context.report({\n loc: /** @type {import('@eslint/core').SourceLocation} */ (typedef.loc),\n message: 'This typedef was not used within the file',\n });\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Besides some expected built-in types, prohibits any types not specified as globals or within `@typedef`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkUsedTypedefs: {\n description: 'Whether to check typedefs for use within the file',\n type: 'boolean',\n },\n definedTypes: {\n description: `This array can be populated to indicate other types which\nare automatically considered as defined (in addition to globals, etc.).\nDefaults to an empty array.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n description: `Whether to disable reporting of errors. Defaults to\n\\`false\\`. This may be set to \\`true\\` in order to take advantage of only\nmarking defined variables as used or checking used typedefs.`,\n type: 'boolean',\n },\n markVariablesAsUsed: {\n description: `Whether to mark variables as used for the purposes\nof the \\`no-unused-vars\\` rule when they are not found to be undefined.\nDefaults to \\`true\\`. May be set to \\`false\\` to enforce a practice of not\nimporting types unless used in code.`,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"noUndefinedTypes.cjs","names":[],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getDocumentNamepathDefiningTags,\n getJSDocCommentBlocks,\n} from '../jsdocUtils.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport {\n parseImportsExports,\n} from 'parse-imports-exports';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function', 'Intl',\n];\n\nconst globalTypes = [\n 'globalThis', 'global', 'window', 'self',\n];\n\nconst iterableIterator = [\n 'Iterable',\n 'Iterator',\n 'IteratorObject',\n];\n\nconst typescriptGlobals = [\n ...iterableIterator,\n\n // https://www.typescriptlang.org/docs/handbook/utility-types.html\n 'Awaited',\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\n/**\n * @param {string|false|undefined} [str]\n * @returns {undefined|string|false}\n */\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n}) => {\n /** @type {string[]} */\n const foundTypedefValues = [];\n\n const {\n scopeManager,\n } = sourceCode;\n\n // When is this ever `null`?\n const globalScope = /** @type {import('eslint').Scope.Scope} */ (\n scopeManager.globalScope\n );\n\n const\n /**\n * @type {{\n * checkUsedTypedefs: boolean\n * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean,\n * }}\n */ {\n checkUsedTypedefs = false,\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n mode,\n preferredTypes,\n structuredTags,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = /** @type {string[]} */ (Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter(Boolean));\n }\n\n const allComments = sourceCode.getAllComments();\n const comments = getJSDocCommentBlocks(sourceCode);\n\n const globals = allComments\n .filter((comment) => {\n return (/^\\s*globals/v).test(comment.value);\n }).flatMap((commentNode) => {\n return commentNode.value.replace(/^\\s*globals/v, '').trim().split(/,\\s*/v);\n }).concat(Object.keys(context.languageOptions.globals ?? []));\n\n const typedefs = getDocumentNamepathDefiningTags(sourceCode);\n\n const typedefDeclarations = typedefs\n .map((tag) => {\n return tag.name;\n });\n\n const importTags = settings.mode === 'typescript' ? /** @type {string[]} */ (comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'import';\n });\n }).flatMap((tag) => {\n const {\n description,\n name,\n type,\n } = tag;\n const typePart = type ? `{${type}} ` : '';\n const imprt = 'import ' + (description ?\n `${typePart}${name} ${description}` :\n `${typePart}${name}`);\n\n const importsExports = parseImportsExports(imprt.trim());\n\n const types = [];\n const namedImports = Object.values(importsExports.namedImports || {})[0]?.[0];\n if (namedImports) {\n if (namedImports.default) {\n types.push(namedImports.default);\n }\n\n if (namedImports.names) {\n types.push(...Object.keys(namedImports.names));\n }\n }\n\n const namespaceImports = Object.values(importsExports.namespaceImports || {})[0]?.[0];\n if (namespaceImports) {\n if (namespaceImports.namespace) {\n types.push(namespaceImports.namespace);\n }\n\n if (namespaceImports.default) {\n types.push(namespaceImports.default);\n }\n }\n\n return types;\n }).filter(Boolean)) : [];\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n /**\n * @param {import('eslint').Rule.Node} ancestorNode\n * @returns {import('comment-parser').Spec[]}\n */\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdc = parseComment(commentNode, '');\n\n return jsdc.tags.filter((tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n // We err on the side of being too aggressive; checking only\n // present tags is not sufficient\n comments.flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return tag === 'template';\n });\n });\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} scope\n * @returns {Set<string>}\n */\n const getValidRuntimeIdentifiers = (scope) => {\n const result = new Set();\n\n let scp = scope;\n\n /**\n * @param {import(\"eslint\").Scope.Scope | null} sc\n */\n const getChildScopes = (sc) => {\n if (sc) {\n // We must check child scopes because when multiple nodes find\n // the same comment block, only one node is reported by our code,\n // and it can be the children which are not reported.\n for (const childScope of sc.childScopes) {\n for (const {\n name,\n } of childScope.variables) {\n result.add(name);\n }\n\n for (const grandChildScope of childScope.childScopes) {\n getChildScopes(grandChildScope);\n }\n }\n }\n };\n\n getChildScopes(scp);\n\n while (scp) {\n for (const {\n name,\n } of scp.variables) {\n result.add(name);\n }\n\n scp = scp.upper;\n }\n\n return result;\n };\n\n /**\n * Recursively extracts types from a namespace declaration.\n * @param {string} prefix - The namespace prefix (e.g., \"MyNamespace\" or \"Outer.Inner\").\n * @param {import('@typescript-eslint/types').TSESTree.TSModuleDeclaration} moduleDeclaration - The module declaration node.\n * @returns {string[]} Array of fully qualified type names.\n */\n const getNamespaceTypes = (prefix, moduleDeclaration) => {\n /* c8 ignore next 3 -- Guard for ambient modules without body. */\n if (!moduleDeclaration.body || moduleDeclaration.body.type !== 'TSModuleBlock') {\n return [];\n }\n\n return moduleDeclaration.body.body.flatMap((item) => {\n /** @type {import('@typescript-eslint/types').TSESTree.ProgramStatement | import('@typescript-eslint/types').TSESTree.NamedExportDeclarations | null} */\n let declaration = item;\n\n if (item.type === 'ExportNamedDeclaration' && item.declaration) {\n declaration = item.declaration;\n }\n\n if (declaration.type === 'TSTypeAliasDeclaration' || declaration.type === 'ClassDeclaration') {\n /* c8 ignore next 4 -- Guard for anonymous class declarations. */\n if (!declaration.id) {\n return [];\n }\n\n return [\n `${prefix}.${declaration.id.name}`,\n ];\n }\n\n if (declaration.type === 'TSInterfaceDeclaration') {\n return [\n `${prefix}.${declaration.id.name}`,\n ...declaration.body.body.map((prop) => {\n // Only `TSPropertySignature` and `TSMethodSignature` have 'key'.\n if (prop.type !== 'TSPropertySignature' && prop.type !== 'TSMethodSignature') {\n return '';\n }\n\n // Key can be computed or a literal, only handle Identifier.\n if (prop.key.type !== 'Identifier') {\n return '';\n }\n\n const propName = prop.key.name;\n /* c8 ignore next -- `propName` is always truthy for Identifiers. */\n return propName ? `${prefix}.${declaration.id.name}.${propName}` : '';\n }).filter(Boolean),\n ];\n }\n\n // Handle nested namespaces.\n if (declaration.type === 'TSModuleDeclaration') {\n /* c8 ignore next -- Nested string-literal modules aren't valid TS syntax. */\n const nestedName = declaration.id?.type === 'Identifier' ? declaration.id.name : '';\n /* c8 ignore next 3 -- Guard. */\n if (!nestedName) {\n return [];\n }\n\n return [\n `${prefix}.${nestedName}`,\n ...getNamespaceTypes(`${prefix}.${nestedName}`, declaration),\n ];\n }\n\n // Fallback for unhandled declaration types (e.g., TSEnumDeclaration, FunctionDeclaration, etc.).\n return [];\n });\n };\n\n /**\n * We treat imports differently as we can't introspect their children.\n * @type {string[]}\n */\n const imports = [];\n\n /** @type {Set<string>} */\n const closedTypes = new Set();\n\n const tsModuleVariables = scopeManager.scopes.filter(({\n type,\n }) => {\n // @ts-expect-error TS\n return type === 'tsModule';\n }).flatMap(({\n variables,\n }) => {\n return variables.map(({\n name,\n }) => {\n return name;\n });\n });\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).flatMap(({\n identifiers,\n name,\n }) => {\n const globalItem = /** @type {import('estree').Identifier & {parent: import('@typescript-eslint/types').TSESTree.Node}} */ (\n identifiers?.[0]\n )?.parent;\n switch (globalItem?.type) {\n case 'ClassDeclaration':\n closedTypes.add(name);\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.PropertyDefinition} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'ImportDefaultSpecifier':\n case 'ImportNamespaceSpecifier':\n case 'ImportSpecifier':\n imports.push(name);\n break;\n case 'TSInterfaceDeclaration':\n return [\n name,\n ...globalItem.body.body.map((item) => {\n const property = /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n item)?.key)?.name;\n /* c8 ignore next 3 -- Guard */\n if (!property) {\n return '';\n }\n\n return `${name}.${property}`;\n }).filter(Boolean),\n ];\n case 'TSModuleDeclaration':\n closedTypes.add(name);\n return [\n name,\n ...getNamespaceTypes(name, globalItem),\n ];\n case 'VariableDeclarator':\n if (/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.CallExpression} */ (\n globalItem?.init\n )?.callee)?.name === 'require'\n ) {\n imports.push(/** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n globalItem.id\n ).name);\n break;\n }\n\n // Module scope names are also defined\n return [\n name,\n ];\n }\n\n return [\n name,\n ];\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(tsModuleVariables)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat((() => {\n // Other methods are not in scope, but we need them, and we grab them here\n if (node?.type === 'MethodDefinition') {\n return /** @type {import('estree').ClassBody} */ (node.parent).body.flatMap((methodOrProp) => {\n if (methodOrProp.type === 'MethodDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n\n if (methodOrProp.type === 'PropertyDefinition') {\n // eslint-disable-next-line unicorn/no-lonely-if -- Pattern\n if (methodOrProp.key.type === 'Identifier') {\n return [\n methodOrProp.key.name,\n `${/** @type {import('estree').ClassDeclaration} */ (\n node.parent?.parent\n )?.id?.name}.${methodOrProp.key.name}`,\n ];\n }\n }\n /* c8 ignore next 2 -- Not yet built */\n\n return '';\n }).filter(Boolean);\n }\n\n return [];\n })())\n .concat((() => {\n // Detect static property assignments like `MyClass.Prop = ...`\n const programBody = /** @type {import('@typescript-eslint/types').TSESTree.Program} */ (\n sourceCode.ast\n ).body;\n\n return programBody.flatMap((statement) => {\n if (\n statement.type === 'ExpressionStatement' &&\n statement.expression.type === 'AssignmentExpression' &&\n statement.expression.left.type === 'MemberExpression' &&\n statement.expression.left.object.type === 'Identifier' &&\n statement.expression.left.property.type === 'Identifier' &&\n closedTypes.has(statement.expression.left.object.name)\n ) {\n return [\n `${statement.expression.left.object.name}.${statement.expression.left.property.name}`,\n ];\n }\n\n return [];\n });\n })())\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 3 */\n sourceCode.getScope(node)) ||\n // @ts-expect-error ESLint 8\n context.getScope()\n )))\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n /**\n * @typedef {{\n * parsedType: import('jsdoc-type-pratt-parser').RootResult;\n * tag: import('comment-parser').Spec|import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: import('../iterateJsdoc.js').Integer\n * }\n * }} TypeAndTagInfo\n */\n\n /**\n * @param {string} propertyName\n * @returns {(tag: (import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * name?: string,\n * type?: string,\n * line?: import('../iterateJsdoc.js').Integer\n * })|import('comment-parser').Spec & {\n * namepathOrURL?: string\n * }\n * ) => undefined|TypeAndTagInfo}\n */\n const tagToParsedType = (propertyName) => {\n return (tag) => {\n try {\n const potentialType = tag[\n /** @type {\"type\"|\"name\"|\"namepathOrURL\"} */ (propertyName)\n ];\n return {\n parsedType: mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode),\n tag,\n };\n } catch {\n return undefined;\n }\n };\n };\n\n const typeTags = utils.filterTags(({\n tag,\n }) => {\n return tag !== 'import' && utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n }).map(tagToParsedType('type'));\n\n const namepathReferencingTags = utils.filterTags(({\n tag,\n }) => {\n return utils.isNamepathReferencingTag(tag);\n }).map(tagToParsedType('name'));\n\n const namepathOrUrlReferencingTags = utils.filterAllTags(({\n tag,\n }) => {\n return utils.isNamepathOrUrlReferencingTag(tag);\n }).map(tagToParsedType('namepathOrURL'));\n\n const definedNamesAndNamepaths = new Set(utils.filterTags(({\n tag,\n }) => {\n return utils.isNameOrNamepathDefiningTag(tag);\n }).map(({\n name,\n }) => {\n return name;\n }));\n\n const tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n parsedType,\n tag,\n } of tagsWithTypes) {\n // eslint-disable-next-line complexity -- Refactor\n traverse(parsedType, (nde, parentNode) => {\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */\n // eslint-disable-next-line canonical/id-match -- Avoid clashes\n (nde)._parent = parentNode;\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n let val = value;\n\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult|undefined} */\n let currNode = nde;\n do {\n currNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (currNode)._parent;\n if (\n // Avoid appending for imports and globals since we don't want to\n // check their properties which may or may not exist\n !imports.includes(val) && !globals.includes(val) &&\n !importTags.includes(val) &&\n !extraTypes.includes(val) &&\n !typedefDeclarations.includes(val) &&\n !globalTypes.includes(val) &&\n currNode && 'right' in currNode &&\n currNode.right?.type === 'JsdocTypeProperty'\n ) {\n val = val + '.' + currNode.right.value;\n }\n } while (currNode?.type === 'JsdocTypeNamePath');\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n const rootNamespace = val.split('.')[0];\n const isNamespaceValid = (definedTypes.includes(rootNamespace) || allDefinedTypes.has(rootNamespace)) &&\n !closedTypes.has(rootNamespace);\n\n if (!allDefinedTypes.has(val) &&\n !definedNamesAndNamepaths.has(val) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(val)) && !isNamespaceValid\n ) {\n const parent =\n /**\n * @type {import('jsdoc-type-pratt-parser').RootResult & {\n * _parent?: import('jsdoc-type-pratt-parser').NonRootResult\n * }}\n */ (nde)._parent;\n if (parent?.type === 'JsdocTypeTypeParameter') {\n return;\n }\n\n if (parent?.type === 'JsdocTypeFunction' &&\n /** @type {import('jsdoc-type-pratt-parser').FunctionResult} */\n (parent)?.typeParameters?.some((typeParam) => {\n return value === typeParam.name.value;\n })\n ) {\n return;\n }\n\n if (parent?.type === 'JsdocTypeInfer' && value === parent.element.value) {\n allDefinedTypes.add(value);\n return;\n }\n\n if (!disableReporting) {\n report(`The type '${val}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(val)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(val);\n /* c8 ignore next 4 */\n } else {\n // @ts-expect-error ESLint 8\n context.markVariableAsUsed(val);\n }\n }\n\n if (checkUsedTypedefs && typedefDeclarations.includes(val)) {\n foundTypedefValues.push(val);\n }\n }\n });\n }\n\n state.foundTypedefValues = foundTypedefValues;\n}, {\n // We use this method rather than checking at end of handler above because\n // in that case, it is invoked too many times and would thus report errors\n // too many times.\n exit ({\n context,\n state,\n utils,\n }) {\n const {\n checkUsedTypedefs = false,\n } = context.options[0] || {};\n\n if (!checkUsedTypedefs) {\n return;\n }\n\n const allComments = context.sourceCode.getAllComments();\n const comments = allComments\n .filter((comment) => {\n return (/^\\*(?!\\*)/v).test(comment.value);\n })\n .map((commentNode) => {\n return {\n doc: parseComment(commentNode, ''),\n loc: commentNode.loc,\n };\n });\n const typedefs = comments\n .flatMap(({\n doc,\n loc,\n }) => {\n const tags = doc.tags.filter(({\n tag,\n }) => {\n return utils.isNameOrNamepathDefiningTag(tag);\n });\n if (!tags.length) {\n return [];\n }\n\n return {\n loc,\n tags,\n };\n });\n\n for (const typedef of typedefs) {\n if (\n !state.foundTypedefValues.includes(typedef.tags[0].name)\n ) {\n context.report({\n loc: /** @type {import('@eslint/core').SourceLocation} */ (typedef.loc),\n message: 'This typedef was not used within the file',\n });\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Besides some expected built-in types, prohibits any types not specified as globals or within `@typedef`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-undefined-types.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkUsedTypedefs: {\n description: 'Whether to check typedefs for use within the file',\n type: 'boolean',\n },\n definedTypes: {\n description: `This array can be populated to indicate other types which\nare automatically considered as defined (in addition to globals, etc.).\nDefaults to an empty array.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n description: `Whether to disable reporting of errors. Defaults to\n\\`false\\`. This may be set to \\`true\\` in order to take advantage of only\nmarking defined variables as used or checking used typedefs.`,\n type: 'boolean',\n },\n markVariablesAsUsed: {\n description: `Whether to mark variables as used for the purposes\nof the \\`no-unused-vars\\` rule when they are not found to be undefined.\nDefaults to \\`true\\`. May be set to \\`false\\` to enforce a practice of not\nimporting types unless used in code.`,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,12 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc.cjs"));
8
- var _jsdoccomment = require("@es-joy/jsdoccomment");
9
- var _eslint = require("eslint");
10
- var _parseImportsExports = require("parse-imports-exports");
11
- var _semver = _interopRequireDefault(require("semver"));
12
- var _toValidIdentifier = _interopRequireDefault(require("../to-valid-identifier.cjs"));
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
- var _default = exports.default = (0, _iterateJsdoc.default)(({
1
+ import iterateJsdoc, { parseComment } from '../iterateJsdoc.js';
2
+ import { commentParserToESTree, estreeToString,
3
+ // getJSDocComment,
4
+ parse as parseType, stringify, traverse, tryParse as tryParseType } from '@es-joy/jsdoccomment';
5
+ import { Linter } from 'eslint';
6
+ import { parseImportsExports } from 'parse-imports-exports';
7
+ import semver from 'semver';
8
+ import toValidIdentifier from '../to-valid-identifier.cjs';
9
+ export default iterateJsdoc(({
16
10
  context,
17
11
  indent,
18
12
  jsdoc,
@@ -32,7 +26,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
32
26
  const comments = allComments.filter(comment => {
33
27
  return /^\*(?!\*)/v.test(comment.value);
34
28
  }).map(commentNode => {
35
- return (0, _jsdoccomment.commentParserToESTree)((0, _iterateJsdoc.parseComment)(commentNode, ''), mode === 'permissive' ? 'typescript' : mode);
29
+ return commentParserToESTree(parseComment(commentNode, ''), mode === 'permissive' ? 'typescript' : mode);
36
30
  });
37
31
  const typedefs = comments.flatMap(doc => {
38
32
  return doc.tags.filter(({
@@ -71,7 +65,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
71
65
  }
72
66
 
73
67
  // For ESLint < 10, use the simple approach of inserting before programNode
74
- if (_semver.default.lt(_eslint.Linter.version, '10.0.0')) {
68
+ if (semver.lt(Linter.version, '10.0.0')) {
75
69
  return fixer.insertTextBefore(programNode, importText);
76
70
  }
77
71
 
@@ -96,15 +90,15 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
96
90
  const potentialType = tag.type;
97
91
  let parsedType;
98
92
  try {
99
- parsedType = mode === 'permissive' ? (0, _jsdoccomment.tryParse)(/** @type {string} */potentialType) : (0, _jsdoccomment.parse)(/** @type {string} */potentialType, mode);
93
+ parsedType = mode === 'permissive' ? tryParseType(/** @type {string} */potentialType) : parseType(/** @type {string} */potentialType, mode);
100
94
  } catch {
101
95
  return;
102
96
  }
103
- (0, _jsdoccomment.traverse)(parsedType, (nde, parentNode) => {
97
+ traverse(parsedType, (nde, parentNode) => {
104
98
  // @ts-expect-error Adding our own property for use below
105
99
  nde.parentNode = parentNode;
106
100
  });
107
- (0, _jsdoccomment.traverse)(parsedType, nde => {
101
+ traverse(parsedType, nde => {
108
102
  const {
109
103
  element,
110
104
  type
@@ -135,7 +129,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
135
129
  if (currentNode.type !== 'JsdocTypeNamePath') {
136
130
  break;
137
131
  }
138
- pathSegments.unshift(currentNode.right.type === 'JsdocTypeIndexedAccessIndex' ? (0, _jsdoccomment.stringify)(currentNode.right.right) : currentNode.right.value);
132
+ pathSegments.unshift(currentNode.right.type === 'JsdocTypeIndexedAccessIndex' ? stringify(currentNode.right.right) : currentNode.right.value);
139
133
  nodes.unshift(currentNode);
140
134
  propertyOrBrackets.unshift(currentNode.pathType);
141
135
  quotes.unshift(currentNode.right.type === 'JsdocTypeIndexedAccessIndex' ? undefined : currentNode.right.meta.quote);
@@ -146,7 +140,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
146
140
  * @param {string[]} extrPathSegments
147
141
  */
148
142
  const getFixer = (name, extrPathSegments) => {
149
- const matchingName = (0, _toValidIdentifier.default)(name);
143
+ const matchingName = toValidIdentifier(name);
150
144
  return () => {
151
145
  /** @type {import('jsdoc-type-pratt-parser').NamePathResult|undefined} */
152
146
  let node = nodes.at(0);
@@ -195,7 +189,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
195
189
  }
196
190
  for (const src of tag.source) {
197
191
  if (src.tokens.type) {
198
- src.tokens.type = `{${(0, _jsdoccomment.stringify)(parsedType)}}`;
192
+ src.tokens.type = `{${stringify(parsedType)}}`;
199
193
  break;
200
194
  }
201
195
  }
@@ -219,7 +213,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
219
213
  namepathMatch = false;
220
214
  break;
221
215
  }
222
- if (typedefNode.right.type === 'JsdocTypeIndexedAccessIndex' && (0, _jsdoccomment.stringify)(typedefNode.right.right) !== pathSegment || typedefNode.right.type !== 'JsdocTypeIndexedAccessIndex' && typedefNode.right.value !== pathSegment) {
216
+ if (typedefNode.right.type === 'JsdocTypeIndexedAccessIndex' && stringify(typedefNode.right.right) !== pathSegment || typedefNode.right.type !== 'JsdocTypeIndexedAccessIndex' && typedefNode.right.value !== pathSegment) {
223
217
  if (namepathMatch === true) {
224
218
  // It stopped matching, so stop
225
219
  break;
@@ -247,7 +241,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
247
241
  }
248
242
  const findMatchingImport = () => {
249
243
  for (const imprt of imports) {
250
- const parsedImport = (0, _parseImportsExports.parseImportsExports)((0, _jsdoccomment.estreeToString)(imprt).replace(/^\s*@/v, '').trim());
244
+ const parsedImport = parseImportsExports(estreeToString(imprt).replace(/^\s*@/v, '').trim());
251
245
  const namedImportsModuleSpecifier = Object.keys(parsedImport.namedImports || {})[0];
252
246
  const namedImports = Object.values(parsedImport.namedImports || {})[0]?.[0];
253
247
  const namedImportNames = (namedImports && namedImports.names && Object.keys(namedImports.names)) ?? [];
@@ -295,7 +289,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
295
289
  if (!pathSegments.length) {
296
290
  utils.reportJSDoc('Inline `import()` found; prefer `@import`', tag, enableFixer ? fixer => {
297
291
  getFixer(element.value, [])();
298
- return createImportInserter(`/** @import * as ${(0, _toValidIdentifier.default)(element.value)} from '${element.value}'; */`)(fixer);
292
+ return createImportInserter(`/** @import * as ${toValidIdentifier(element.value)} from '${element.value}'; */`)(fixer);
299
293
  } : null);
300
294
  return;
301
295
  }
@@ -313,7 +307,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
313
307
  } else {
314
308
  getFixer(/** @type {string} */pathSegments.at(-1), pathSegments.slice(0, -1))();
315
309
  }
316
- const importText = outputType === 'namespaced-import' ? `/** @import * as ${(0, _toValidIdentifier.default)(element.value)} from '${element.value}'; */` : `/** @import { ${(0, _toValidIdentifier.default)(/* c8 ignore next -- TS */
310
+ const importText = outputType === 'namespaced-import' ? `/** @import * as ${toValidIdentifier(element.value)} from '${element.value}'; */` : `/** @import { ${toValidIdentifier(/* c8 ignore next -- TS */
317
311
  pathSegments.at(-1) ?? '')} } from '${element.value}'; */`;
318
312
  return createImportInserter(importText)(fixer);
319
313
  } : null);
@@ -358,5 +352,4 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
358
352
  type: 'suggestion'
359
353
  }
360
354
  });
361
- module.exports = exports.default;
362
355
  //# sourceMappingURL=preferImportTag.cjs.map