eslint-plugin-jsdoc 50.6.17 → 50.7.1

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 (155) hide show
  1. package/dist/alignTransform.cjs +10 -10
  2. package/dist/alignTransform.cjs.map +1 -1
  3. package/dist/exportParser.cjs +141 -135
  4. package/dist/exportParser.cjs.map +1 -1
  5. package/dist/generateRule.cjs +10 -12
  6. package/dist/generateRule.cjs.map +1 -1
  7. package/dist/getDefaultTagStructureForMode.cjs +73 -73
  8. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  9. package/dist/getJsdocProcessorPlugin.cjs +121 -110
  10. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  11. package/dist/index.cjs +17 -12
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.ts +4 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/iterateJsdoc.cjs +87 -66
  16. package/dist/iterateJsdoc.cjs.map +1 -1
  17. package/dist/jsdocUtils.cjs +144 -142
  18. package/dist/jsdocUtils.cjs.map +1 -1
  19. package/dist/rules/checkAlignment.cjs +2 -2
  20. package/dist/rules/checkAlignment.cjs.map +1 -1
  21. package/dist/rules/checkExamples.cjs +22 -28
  22. package/dist/rules/checkExamples.cjs.map +1 -1
  23. package/dist/rules/checkIndentation.cjs +2 -2
  24. package/dist/rules/checkIndentation.cjs.map +1 -1
  25. package/dist/rules/checkLineAlignment.cjs +14 -14
  26. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  27. package/dist/rules/checkParamNames.cjs +21 -15
  28. package/dist/rules/checkParamNames.cjs.map +1 -1
  29. package/dist/rules/checkPropertyNames.cjs +2 -2
  30. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  31. package/dist/rules/checkTagNames.cjs +11 -11
  32. package/dist/rules/checkTagNames.cjs.map +1 -1
  33. package/dist/rules/checkTemplateNames.cjs +21 -22
  34. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  35. package/dist/rules/checkTypes.cjs +10 -10
  36. package/dist/rules/checkTypes.cjs.map +1 -1
  37. package/dist/rules/checkValues.cjs +11 -14
  38. package/dist/rules/checkValues.cjs.map +1 -1
  39. package/dist/rules/convertToJsdocComments.cjs +26 -27
  40. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  41. package/dist/rules/emptyTags.cjs +6 -6
  42. package/dist/rules/emptyTags.cjs.map +1 -1
  43. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  44. package/dist/rules/informativeDocs.cjs +12 -12
  45. package/dist/rules/informativeDocs.cjs.map +1 -1
  46. package/dist/rules/linesBeforeBlock.cjs +12 -12
  47. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  48. package/dist/rules/matchDescription.cjs +1 -1
  49. package/dist/rules/matchDescription.cjs.map +1 -1
  50. package/dist/rules/matchName.cjs +4 -4
  51. package/dist/rules/matchName.cjs.map +1 -1
  52. package/dist/rules/multilineBlocks.cjs +10 -10
  53. package/dist/rules/multilineBlocks.cjs.map +1 -1
  54. package/dist/rules/noBadBlocks.cjs +3 -3
  55. package/dist/rules/noBadBlocks.cjs.map +1 -1
  56. package/dist/rules/noMultiAsterisks.cjs +6 -6
  57. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  58. package/dist/rules/noRestrictedSyntax.cjs +2 -2
  59. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  60. package/dist/rules/noTypes.cjs.map +1 -1
  61. package/dist/rules/noUndefinedTypes.cjs +17 -20
  62. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  63. package/dist/rules/requireAsteriskPrefix.cjs +4 -4
  64. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  65. package/dist/rules/requireDescription.cjs +2 -2
  66. package/dist/rules/requireDescription.cjs.map +1 -1
  67. package/dist/rules/requireDescriptionCompleteSentence.cjs +8 -8
  68. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  69. package/dist/rules/requireFileOverview.cjs +6 -6
  70. package/dist/rules/requireFileOverview.cjs.map +1 -1
  71. package/dist/rules/requireHyphenBeforeParamDescription.cjs +1 -4
  72. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  73. package/dist/rules/requireJsdoc.cjs +19 -19
  74. package/dist/rules/requireJsdoc.cjs.map +1 -1
  75. package/dist/rules/requireParam.cjs +12 -12
  76. package/dist/rules/requireParam.cjs.map +1 -1
  77. package/dist/rules/requireProperty.cjs +1 -1
  78. package/dist/rules/requireProperty.cjs.map +1 -1
  79. package/dist/rules/requireReturns.cjs +3 -3
  80. package/dist/rules/requireReturns.cjs.map +1 -1
  81. package/dist/rules/requireReturnsCheck.cjs +1 -1
  82. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  83. package/dist/rules/requireReturnsDescription.cjs +1 -1
  84. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  85. package/dist/rules/requireTemplate.cjs +16 -15
  86. package/dist/rules/requireTemplate.cjs.map +1 -1
  87. package/dist/rules/requireYields.cjs +4 -4
  88. package/dist/rules/requireYields.cjs.map +1 -1
  89. package/dist/rules/requireYieldsCheck.cjs +6 -6
  90. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  91. package/dist/rules/sortTags.cjs +13 -13
  92. package/dist/rules/sortTags.cjs.map +1 -1
  93. package/dist/rules/tagLines.cjs +11 -11
  94. package/dist/rules/tagLines.cjs.map +1 -1
  95. package/dist/rules/textEscaping.cjs +2 -2
  96. package/dist/rules/textEscaping.cjs.map +1 -1
  97. package/dist/rules/validTypes.cjs +15 -15
  98. package/dist/rules/validTypes.cjs.map +1 -1
  99. package/dist/tagNames.cjs +1 -1
  100. package/dist/tagNames.cjs.map +1 -1
  101. package/dist/utils/hasReturnValue.cjs +176 -176
  102. package/dist/utils/hasReturnValue.cjs.map +1 -1
  103. package/eslint.config.js +36 -32
  104. package/package.json +29 -29
  105. package/pnpm-workspace.yaml +1 -0
  106. package/src/alignTransform.js +15 -15
  107. package/src/exportParser.js +386 -373
  108. package/src/getDefaultTagStructureForMode.js +45 -45
  109. package/src/getJsdocProcessorPlugin.js +175 -128
  110. package/src/index.js +66 -37
  111. package/src/iterateJsdoc.js +61 -28
  112. package/src/jsdocUtils.js +354 -338
  113. package/src/rules/checkAlignment.js +2 -2
  114. package/src/rules/checkExamples.js +16 -20
  115. package/src/rules/checkIndentation.js +2 -2
  116. package/src/rules/checkLineAlignment.js +10 -10
  117. package/src/rules/checkParamNames.js +22 -14
  118. package/src/rules/checkPropertyNames.js +1 -1
  119. package/src/rules/checkTagNames.js +7 -7
  120. package/src/rules/checkTemplateNames.js +52 -38
  121. package/src/rules/checkTypes.js +7 -7
  122. package/src/rules/checkValues.js +16 -17
  123. package/src/rules/convertToJsdocComments.js +47 -37
  124. package/src/rules/emptyTags.js +14 -7
  125. package/src/rules/importsAsDependencies.js +3 -1
  126. package/src/rules/informativeDocs.js +58 -58
  127. package/src/rules/linesBeforeBlock.js +25 -17
  128. package/src/rules/matchDescription.js +1 -1
  129. package/src/rules/matchName.js +2 -2
  130. package/src/rules/multilineBlocks.js +10 -10
  131. package/src/rules/noBadBlocks.js +3 -3
  132. package/src/rules/noMultiAsterisks.js +4 -4
  133. package/src/rules/noRestrictedSyntax.js +1 -1
  134. package/src/rules/noTypes.js +1 -1
  135. package/src/rules/noUndefinedTypes.js +29 -23
  136. package/src/rules/requireAsteriskPrefix.js +3 -3
  137. package/src/rules/requireDescription.js +1 -1
  138. package/src/rules/requireDescriptionCompleteSentence.js +6 -6
  139. package/src/rules/requireFileOverview.js +3 -3
  140. package/src/rules/requireHyphenBeforeParamDescription.js +2 -5
  141. package/src/rules/requireJsdoc.js +14 -14
  142. package/src/rules/requireParam.js +9 -9
  143. package/src/rules/requireProperty.js +1 -1
  144. package/src/rules/requireReturns.js +1 -1
  145. package/src/rules/requireReturnsCheck.js +1 -1
  146. package/src/rules/requireReturnsDescription.js +1 -1
  147. package/src/rules/requireTemplate.js +59 -38
  148. package/src/rules/requireYields.js +3 -3
  149. package/src/rules/requireYieldsCheck.js +1 -1
  150. package/src/rules/sortTags.js +7 -7
  151. package/src/rules/tagLines.js +8 -8
  152. package/src/rules/textEscaping.js +2 -0
  153. package/src/rules/validTypes.js +29 -29
  154. package/src/tagNames.js +2 -2
  155. package/src/utils/hasReturnValue.js +298 -283
@@ -1 +1 @@
1
- {"version":3,"file":"noMultiAsterisks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","_default","exports","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","module"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n const endAsterisks = allowWhitespace ?\n (isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS) :\n (isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS);\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Prevents use of multiple asterisks at the beginning of lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\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":"noMultiAsterisks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","_default","exports","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","number","tokens","delimiter","description","end","name","postDelimiter","tag","type","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","module"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n number,\n tokens,\n }) => {\n const {\n delimiter,\n description,\n end,\n name,\n postDelimiter,\n tag,\n type,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n const endAsterisks = allowWhitespace ?\n (isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS) :\n (isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS);\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Prevents use of multiple asterisks at the beginning of lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -22,8 +22,8 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
22
22
  contexts
23
23
  } = context.options[0];
24
24
  const {
25
- foundContext,
26
- contextStr
25
+ contextStr,
26
+ foundContext
27
27
  } = utils.findContext(contexts, comment);
28
28
 
29
29
  // We are not on the *particular* matching context/comment, so don't assume
@@ -1 +1 @@
1
- {"version":3,"file":"noRestrictedSyntax.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","info","comment","report","utils","options","length","contexts","foundContext","contextStr","findContext","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required","nonGlobalSettings","module"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n info: {\n comment,\n },\n report,\n utils,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `contexts` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const {\n foundContext,\n contextStr,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('../iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\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 message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonGlobalSettings: true,\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;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,IAAI,EAAE;IACJC;EACF,CAAC;EACDC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAO,CAACC,MAAM,EAAE;IAC3BH,MAAM,CAAC,6DAA6D,CAAC;IAErE;EACF;EAEA,MAAM;IACJI;EACF,CAAC,GAAGP,OAAO,CAACK,OAAO,CAAC,CAAC,CAAC;EAEtB,MAAM;IACJG,YAAY;IACZC;EACF,CAAC,GAAGL,KAAK,CAACM,WAAW,CAACH,QAAQ,EAAEL,OAAO,CAAC;;EAExC;EACA;EACA,IAAI,CAACM,YAAY,EAAE;IACjB;EACF;EAEA,MAAMG,OAAO,GAAG,yDAA0D,CACxEH,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CACXG,OAAO,KACR,mCAAmC,IAChCT,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;EAExCC,MAAM,CAACQ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAET,OAAO,GAAG;IACpCA,OAAO;IACPF,OAAO,EAAES;EACX,CAAC,GAAG;IACFT,OAAO,EAAES;EACX,CAAC,CAAC;AACJ,CAAC,EAAE;EACDG,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDAAsD;MACnEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVb,QAAQ,EAAE;UACRc,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEJ,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVlB,OAAO,EAAE;kBACPqB,IAAI,EAAE;gBACR,CAAC;gBACDvB,OAAO,EAAE;kBACPuB,IAAI,EAAE;gBACR,CAAC;gBACDZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDC,QAAQ,EAAE,CACR,UAAU,CACX;MACDD,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR,CAAC;EACDE,iBAAiB,EAAE;AACrB,CAAC,CAAC;AAAAC,MAAA,CAAA5B,OAAA,GAAAA,OAAA,CAAAF,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"noRestrictedSyntax.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","info","comment","report","utils","options","length","contexts","contextStr","foundContext","findContext","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required","nonGlobalSettings","module"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n info: {\n comment,\n },\n report,\n utils,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `contexts` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const {\n contextStr,\n foundContext,\n } = utils.findContext(contexts, comment);\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const message = /** @type {import('../iterateJsdoc.js').ContextObject} */ (\n foundContext\n )?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, comment ? {\n comment,\n context: contextStr,\n } : {\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-restricted-syntax.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\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 message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonGlobalSettings: true,\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;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GAE/B,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,IAAI,EAAE;IACJC;EACF,CAAC;EACDC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAO,CAACC,MAAM,EAAE;IAC3BH,MAAM,CAAC,6DAA6D,CAAC;IAErE;EACF;EAEA,MAAM;IACJI;EACF,CAAC,GAAGP,OAAO,CAACK,OAAO,CAAC,CAAC,CAAC;EAEtB,MAAM;IACJG,UAAU;IACVC;EACF,CAAC,GAAGL,KAAK,CAACM,WAAW,CAACH,QAAQ,EAAEL,OAAO,CAAC;;EAExC;EACA;EACA,IAAI,CAACO,YAAY,EAAE;IACjB;EACF;EAEA,MAAME,OAAO,GAAG,yDAA0D,CACxEF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CACXE,OAAO,KACR,mCAAmC,IAChCT,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;EAExCC,MAAM,CAACQ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAET,OAAO,GAAG;IACpCA,OAAO;IACPF,OAAO,EAAEQ;EACX,CAAC,GAAG;IACFR,OAAO,EAAEQ;EACX,CAAC,CAAC;AACJ,CAAC,EAAE;EACDI,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDAAsD;MACnEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVb,QAAQ,EAAE;UACRc,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEJ,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVlB,OAAO,EAAE;kBACPqB,IAAI,EAAE;gBACR,CAAC;gBACDvB,OAAO,EAAE;kBACPuB,IAAI,EAAE;gBACR,CAAC;gBACDZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDC,QAAQ,EAAE,CACR,UAAU,CACX;MACDD,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR,CAAC;EACDE,iBAAiB,EAAE;AACrB,CAAC,CAAC;AAAAC,MAAA,CAAA5B,OAAA,GAAAA,OAAA,CAAAF,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"noTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","removeType","tokens","postTag","type","_default","exports","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","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 utils,\n}) => {\n if (!utils.isIteratingFunction() && !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 contextDefaults: [\n 'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression', 'TSDeclareFunction',\n // Add this to above defaults\n 'TSMethodSignature'\n ],\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\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 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;AACF,CAAC,KAAK;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAmB,CAAC,CAAC,IAAI,CAACD,KAAK,CAACE,iBAAiB,CAAC,CAAC,EAAE;IAC9D;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,CAACT,IAAI,EAAE;MACZI,KAAK,CAACM,WAAW,CAAC,+BAA+BD,GAAG,CAACA,GAAG,GAAG,EAAEA,GAAG,EAAE,MAAM;QACtE,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;UAC/Bd,UAAU,CAACc,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;AACF,CAAC,EAAE;EACDC,eAAe,EAAE,CACf,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB;EAC3F;EACA,mBAAmB,CACpB;EACDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DAA+D;MAC5EC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEvB,IAAI,EAAE;YACR,CAAC,EACD;cACEmB,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPxB,IAAI,EAAE;gBACR,CAAC;gBACDyB,OAAO,EAAE;kBACPzB,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;AAAA0B,MAAA,CAAAxB,OAAA,GAAAA,OAAA,CAAAN,OAAA","ignoreList":[]}
1
+ {"version":3,"file":"noTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","removeType","tokens","postTag","type","_default","exports","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","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 utils,\n}) => {\n if (!utils.isIteratingFunction() && !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 contextDefaults: [\n 'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression', 'TSDeclareFunction',\n // Add this to above defaults\n 'TSMethodSignature',\n ],\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\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 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;AACF,CAAC,KAAK;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAmB,CAAC,CAAC,IAAI,CAACD,KAAK,CAACE,iBAAiB,CAAC,CAAC,EAAE;IAC9D;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,CAACT,IAAI,EAAE;MACZI,KAAK,CAACM,WAAW,CAAC,+BAA+BD,GAAG,CAACA,GAAG,GAAG,EAAEA,GAAG,EAAE,MAAM;QACtE,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;UAC/Bd,UAAU,CAACc,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;AACF,CAAC,EAAE;EACDC,eAAe,EAAE,CACf,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB;EAC3F;EACA,mBAAmB,CACpB;EACDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DAA+D;MAC5EC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEvB,IAAI,EAAE;YACR,CAAC,EACD;cACEmB,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPxB,IAAI,EAAE;gBACR,CAAC;gBACDyB,OAAO,EAAE;kBACPzB,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;AAAA0B,MAAA,CAAAxB,OAAA,GAAAA,OAAA,CAAAN,OAAA","ignoreList":[]}
@@ -4,14 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _path = require("path");
8
- var _url = require("url");
9
- var _parseImportsExports = require("parse-imports-exports");
10
- var _jsdoccomment = require("@es-joy/jsdoccomment");
11
7
  var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc.cjs"));
12
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
- const _dirname = (0, _path.dirname)((0, _url.fileURLToPath)(require('url').pathToFileURL(__filename).toString()));
8
+ var _jsdoccomment = require("@es-joy/jsdoccomment");
9
+ var _parseImportsExports = require("parse-imports-exports");
10
+ 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
11
  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'];
16
12
  const typescriptGlobals = [
17
13
  // https://www.typescriptlang.org/docs/handbook/utility-types.html
@@ -57,9 +53,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
57
53
  /** @type {(string|undefined)[]} */
58
54
  let definedPreferredTypes = [];
59
55
  const {
56
+ mode,
60
57
  preferredTypes,
61
- structuredTags,
62
- mode
58
+ structuredTags
63
59
  } = settings;
64
60
  if (Object.keys(preferredTypes).length) {
65
61
  definedPreferredTypes = /** @type {string[]} */Object.values(preferredTypes).map(preferredType => {
@@ -90,7 +86,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
90
86
  }).map(tag => {
91
87
  return tag.name;
92
88
  });
93
- const importTags = settings.mode === 'typescript' ? ( /** @type {string[]} */comments.flatMap(doc => {
89
+ const importTags = settings.mode === 'typescript' ? (/** @type {string[]} */comments.flatMap(doc => {
94
90
  return doc.tags.filter(({
95
91
  tag
96
92
  }) => {
@@ -99,9 +95,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
99
95
  }).flatMap(tag => {
100
96
  var _Object$values$, _Object$values$2;
101
97
  const {
102
- type,
98
+ description,
103
99
  name,
104
- description
100
+ type
105
101
  } = tag;
106
102
  const typePart = type ? `{${type}} ` : '';
107
103
  const imprt = 'import ' + (description ? `${typePart}${name} ${description}` : `${typePart}${name}`);
@@ -170,13 +166,14 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
170
166
  */
171
167
  const getValidRuntimeIdentifiers = scope => {
172
168
  const result = new Set();
173
- while (scope) {
169
+ let scp = scope;
170
+ while (scp) {
174
171
  for (const {
175
172
  name
176
- } of scope.variables) {
173
+ } of scp.variables) {
177
174
  result.add(name);
178
175
  }
179
- scope = scope.upper;
176
+ scp = scp.upper;
180
177
  }
181
178
  return result;
182
179
  };
@@ -196,7 +193,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
196
193
  }) => {
197
194
  return name;
198
195
  /* c8 ignore next */
199
- }) : []).concat(extraTypes).concat(typedefDeclarations).concat(importTags).concat(definedTypes).concat( /** @type {string[]} */definedPreferredTypes).concat(...getValidRuntimeIdentifiers(node && (sourceCode.getScope && /* c8 ignore next 2 */
196
+ }) : []).concat(extraTypes).concat(typedefDeclarations).concat(importTags).concat(definedTypes).concat(/** @type {string[]} */definedPreferredTypes).concat(...getValidRuntimeIdentifiers(node && (sourceCode.getScope && /* c8 ignore next 2 */
200
197
  sourceCode.getScope(node) || context.getScope()))).concat(settings.mode === 'jsdoc' ? [] : [...(settings.mode === 'typescript' ? typescriptGlobals : []), ...closureGenericTypes]));
201
198
 
202
199
  /**
@@ -222,9 +219,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
222
219
  const tagToParsedType = propertyName => {
223
220
  return tag => {
224
221
  try {
225
- const potentialType = tag[( /** @type {"type"|"name"|"namepathOrURL"} */propertyName)];
222
+ const potentialType = tag[(/** @type {"type"|"name"|"namepathOrURL"} */propertyName)];
226
223
  return {
227
- parsedType: mode === 'permissive' ? (0, _jsdoccomment.tryParse)( /** @type {string} */potentialType) : (0, _jsdoccomment.parse)( /** @type {string} */potentialType, mode),
224
+ parsedType: mode === 'permissive' ? (0, _jsdoccomment.tryParse)(/** @type {string} */potentialType) : (0, _jsdoccomment.parse)(/** @type {string} */potentialType, mode),
228
225
  tag
229
226
  };
230
227
  } catch {
@@ -251,8 +248,8 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
251
248
  // Remove types which failed to parse
252
249
  ].filter(Boolean);
253
250
  for (const {
254
- tag,
255
- parsedType
251
+ parsedType,
252
+ tag
256
253
  } of tagsWithTypes) {
257
254
  (0, _jsdoccomment.traverse)(parsedType, nde => {
258
255
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"noUndefinedTypes.cjs","names":["_path","require","_url","_parseImportsExports","_jsdoccomment","_iterateJsdoc","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","__dirname","dirname","fileURLToPath","pathToFileURL","__filename","toString","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","preferredTypes","structuredTags","mode","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","comments","getAllComments","comment","test","value","commentNode","parseComment","typedefDeclarations","flatMap","doc","tags","tag","isNamepathDefiningTag","name","importTags","_Object$values$","_Object$values$2","type","description","typePart","imprt","importsExports","parseImportsExports","trim","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","_currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","variables","add","upper","allDefinedTypes","concat","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\nimport {parseImportsExports} from 'parse-imports-exports';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\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',\n];\n\nconst typescriptGlobals = [\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(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\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 * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\n definedTypes = [],\n disableReporting = false,\n markVariablesAsUsed = true,\n } = context.options[0] || {};\n\n /** @type {(string|undefined)[]} */\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\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 comments = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\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 type, name, description\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 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 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 jsdoc = parseComment(commentNode, '');\n\n return jsdoc.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 utils.getPresentTags([\n 'template',\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 while (scope) {\n for (const {name} of scope.variables) {\n result.add(name)\n }\n scope = scope.upper\n }\n return result\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 }).map(({\n name,\n }) => {\n return name;\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 2 */\n sourceCode.getScope(node)) ||\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 tagsWithTypes = /** @type {TypeAndTagInfo[]} */ ([\n ...typeTags,\n ...namepathReferencingTags,\n ...namepathOrUrlReferencingTags,\n // Remove types which failed to parse\n ].filter(Boolean));\n\n for (const {\n tag,\n parsedType,\n } of tagsWithTypes) {\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n /* c8 ignore next 3 */\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\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 definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\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":["_iterateJsdoc","_interopRequireWildcard","require","_jsdoccomment","_parseImportsExports","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","_default","exports","iterateJsdoc","context","node","report","settings","sourceCode","utils","_globalScope$childSco","scopeManager","globalScope","definedTypes","disableReporting","markVariablesAsUsed","options","definedPreferredTypes","mode","preferredTypes","structuredTags","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","Boolean","comments","getAllComments","comment","test","value","commentNode","parseComment","typedefDeclarations","flatMap","doc","tags","tag","isNamepathDefiningTag","name","importTags","_Object$values$","_Object$values$2","description","type","typePart","imprt","importsExports","parseImportsExports","trim","types","namedImports","push","names","namespaceImports","namespace","ancestorNodes","currentNode","_currentNode","parent","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","getValidRuntimeIdentifiers","scope","result","Set","scp","variables","add","upper","allDefinedTypes","concat","getScope","tagToParsedType","propertyName","potentialType","parsedType","tryParseType","parseType","typeTags","filterTags","tagMightHaveTypePosition","namepathReferencingTags","isNamepathReferencingTag","namepathOrUrlReferencingTags","filterAllTags","isNamepathOrUrlReferencingTag","tagsWithTypes","traverse","nde","_structuredTags$tag$t","structuredTypes","Array","isArray","includes","markVariableAsUsed","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 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',\n];\n\nconst typescriptGlobals = [\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(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\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 * definedTypes: string[],\n * disableReporting: boolean,\n * markVariablesAsUsed: boolean\n * }}\n */ {\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 comments = sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n\n const typedefDeclarations = comments\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\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 jsdoc = parseComment(commentNode, '');\n\n return jsdoc.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 utils.getPresentTags([\n 'template',\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 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 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 }).map(({\n name,\n }) => {\n return name;\n /* c8 ignore next */\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(importTags)\n .concat(definedTypes)\n .concat(/** @type {string[]} */ (definedPreferredTypes))\n .concat(...getValidRuntimeIdentifiers(node && (\n (sourceCode.getScope &&\n /* c8 ignore next 2 */\n sourceCode.getScope(node)) ||\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 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 traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n if (!disableReporting) {\n report(`The type '${value}' is undefined.`, null, tag);\n }\n } else if (markVariablesAsUsed && !extraTypes.includes(value)) {\n if (sourceCode.markVariableAsUsed) {\n sourceCode.markVariableAsUsed(value);\n /* c8 ignore next 3 */\n } else {\n context.markVariableAsUsed(value);\n }\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\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 definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n disableReporting: {\n type: 'boolean',\n },\n markVariablesAsUsed: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -8,9 +8,9 @@ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
8
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  var _default = exports.default = (0, _iterateJsdoc.default)(({
10
10
  context,
11
+ indent,
11
12
  jsdoc,
12
- utils,
13
- indent
13
+ utils
14
14
  }) => {
15
15
  const [defaultRequireValue = 'always', {
16
16
  tags: tagMap = {}
@@ -30,9 +30,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
30
30
  var _tagMap$any2;
31
31
  const {
32
32
  delimiter,
33
- tag,
33
+ description,
34
34
  end,
35
- description
35
+ tag
36
36
  } = tokens;
37
37
 
38
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"requireAsteriskPrefix.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","jsdoc","utils","indent","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","_tagMap$any2","delimiter","tag","end","description","neverFix","postDelimiter","checkNever","checkValue","_tagMap$always","_tagMap$never","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","_tagMap$never2","_tagMap$always2","slice","_tagMap$any","any","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","items","module"],"sources":["../../src/rules/requireAsteriskPrefix.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n indent,\n}) => {\n const [\n defaultRequireValue = 'always',\n {\n tags: tagMap = {},\n } = {},\n ] = context.options;\n\n const {\n source,\n } = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n /** @type {string} */\n let currentTag;\n source.some(({\n number,\n tokens,\n }) => {\n const {\n delimiter,\n tag,\n end,\n description,\n } = tokens;\n\n /**\n * @returns {void}\n */\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n /**\n * @param {string} checkValue\n * @returns {boolean}\n */\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n /**\n * @returns {void}\n */\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n /**\n * @param {string} checkValue\n * @returns {boolean}\n */\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description:\n 'Requires that each JSDoc line starts with an `*`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"requireAsteriskPrefix.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","_default","exports","iterateJsdoc","context","indent","jsdoc","utils","defaultRequireValue","tags","tagMap","options","source","always","never","currentTag","some","number","tokens","_tagMap$any2","delimiter","description","end","tag","neverFix","postDelimiter","checkNever","checkValue","_tagMap$always","_tagMap$never","includes","reportJSDoc","column","line","alwaysFix","start","checkAlways","_tagMap$never2","_tagMap$always2","slice","_tagMap$any","any","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","items","module"],"sources":["../../src/rules/requireAsteriskPrefix.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n utils,\n}) => {\n const [\n defaultRequireValue = 'always',\n {\n tags: tagMap = {},\n } = {},\n ] = context.options;\n\n const {\n source,\n } = jsdoc;\n\n const always = defaultRequireValue === 'always';\n const never = defaultRequireValue === 'never';\n\n /** @type {string} */\n let currentTag;\n source.some(({\n number,\n tokens,\n }) => {\n const {\n delimiter,\n description,\n end,\n tag,\n } = tokens;\n\n /**\n * @returns {void}\n */\n const neverFix = () => {\n tokens.delimiter = '';\n tokens.postDelimiter = '';\n };\n\n /**\n * @param {string} checkValue\n * @returns {boolean}\n */\n const checkNever = (checkValue) => {\n if (delimiter && delimiter !== '/**' && (\n never && !tagMap.always?.includes(checkValue) ||\n tagMap.never?.includes(checkValue)\n )) {\n utils.reportJSDoc('Expected JSDoc line to have no prefix.', {\n column: 0,\n line: number,\n }, neverFix);\n\n return true;\n }\n\n return false;\n };\n\n /**\n * @returns {void}\n */\n const alwaysFix = () => {\n if (!tokens.start) {\n tokens.start = indent + ' ';\n }\n\n tokens.delimiter = '*';\n tokens.postDelimiter = tag || description ? ' ' : '';\n };\n\n /**\n * @param {string} checkValue\n * @returns {boolean}\n */\n const checkAlways = (checkValue) => {\n if (\n !delimiter && (\n always && !tagMap.never?.includes(checkValue) ||\n tagMap.always?.includes(checkValue)\n )\n ) {\n utils.reportJSDoc('Expected JSDoc line to have the prefix.', {\n column: 0,\n line: number,\n }, alwaysFix);\n\n return true;\n }\n\n return false;\n };\n\n if (tag) {\n // Remove at sign\n currentTag = tag.slice(1);\n }\n\n if (\n // If this is the end but has a tag, the delimiter will also be\n // populated and will be safely ignored later\n end && !tag\n ) {\n return false;\n }\n\n if (!currentTag) {\n if (tagMap.any?.includes('*description')) {\n return false;\n }\n\n if (checkNever('*description')) {\n return true;\n }\n\n if (checkAlways('*description')) {\n return true;\n }\n\n return false;\n }\n\n if (tagMap.any?.includes(currentTag)) {\n return false;\n }\n\n if (checkNever(currentTag)) {\n return true;\n }\n\n if (checkAlways(currentTag)) {\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description:\n 'Requires that each JSDoc line starts with an `*`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-asterisk-prefix.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n properties: {\n always: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n any: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n never: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -14,10 +14,10 @@ const checkDescription = description => {
14
14
  return description.trim().split('\n').filter(Boolean).length;
15
15
  };
16
16
  var _default = exports.default = (0, _iterateJsdoc.default)(({
17
+ context,
17
18
  jsdoc,
18
19
  report,
19
- utils,
20
- context
20
+ utils
21
21
  }) => {
22
22
  if (utils.avoidDocs()) {
23
23
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"requireDescription.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","checkDescription","description","trim","split","filter","Boolean","length","_default","exports","iterateJsdoc","jsdoc","report","utils","context","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","getDescription","descTags","getPresentTags","tag","functionExamples","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy","module"],"sources":["../../src/rules/requireDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {string} description\n * @returns {import('../iterateJsdoc.js').Integer}\n */\nconst checkDescription = (description) => {\n return description\n .trim()\n .split('\\n')\n .filter(Boolean)\n .length;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n descriptionStyle = 'body',\n } = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n\n const isBlocked = typeof targetTagName === 'object' && 'blocked' in targetTagName && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = /** @type {{blocked: true; tagName: string;}} */ (\n targetTagName\n ).tagName;\n }\n\n if (descriptionStyle !== 'tag') {\n const {\n description,\n } = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags([\n 'desc', 'description',\n ]);\n if (descTags.length) {\n const [\n {\n tag: tagName,\n },\n ] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\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 descriptionStyle: {\n enum: [\n 'body', 'tag', 'any',\n ],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"requireDescription.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","checkDescription","description","trim","split","filter","Boolean","length","_default","exports","iterateJsdoc","context","jsdoc","report","utils","avoidDocs","descriptionStyle","options","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","getDescription","descTags","getPresentTags","tag","functionExamples","tags","example","name","getTagDescription","contextDefaults","meta","docs","url","schema","additionalProperties","properties","checkConstructors","type","checkGetters","checkSetters","contexts","items","anyOf","comment","enum","exemptedBy","module"],"sources":["../../src/rules/requireDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @param {string} description\n * @returns {import('../iterateJsdoc.js').Integer}\n */\nconst checkDescription = (description) => {\n return description\n .trim()\n .split('\\n')\n .filter(Boolean)\n .length;\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n\n const {\n descriptionStyle = 'body',\n } = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n\n const isBlocked = typeof targetTagName === 'object' && 'blocked' in targetTagName && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = /** @type {{blocked: true; tagName: string;}} */ (\n targetTagName\n ).tagName;\n }\n\n if (descriptionStyle !== 'tag') {\n const {\n description,\n } = utils.getDescription();\n if (checkDescription(description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n const descTags = utils.getPresentTags([\n 'desc', 'description',\n ]);\n if (descTags.length) {\n const [\n {\n tag: tagName,\n },\n ] = descTags;\n report(`Remove the @${tagName} tag to leave a plain block description or add additional description text above the @${tagName} line.`);\n } else {\n report('Missing JSDoc block description.');\n }\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n for (const example of functionExamples) {\n if (!checkDescription(`${example.name} ${utils.getTagDescription(example)}`)) {\n report(`Missing JSDoc @${targetTagName} description.`, null, example);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all functions have a description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-description.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n checkSetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\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 descriptionStyle: {\n enum: [\n 'body', 'tag', 'any',\n ],\n type: 'string',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -7,11 +7,11 @@ exports.default = void 0;
7
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
8
  var _escapeStringRegexp = _interopRequireDefault(require("escape-string-regexp"));
9
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const otherDescriptiveTags = new Set([
10
+ const otherDescriptiveTags = new Set(['classdesc', 'deprecated', 'exception', 'file', 'fileoverview', 'overview',
11
11
  // 'copyright' and 'see' might be good addition, but as the former may be
12
12
  // sensitive text, and the latter may have just a link, they are not
13
13
  // included by default
14
- 'summary', 'file', 'fileoverview', 'overview', 'classdesc', 'todo', 'deprecated', 'throws', 'exception', 'yields', 'yield']);
14
+ 'summary', 'throws', 'todo', 'yield', 'yields']);
15
15
 
16
16
  /**
17
17
  * @param {string} text
@@ -102,15 +102,15 @@ const validateDescription = (description, reportOrig, jsdocNode, abbreviationsRe
102
102
  if (!description || /^\n+$/u.test(description)) {
103
103
  return false;
104
104
  }
105
- const descriptionNoHeadings = description.replaceAll(/^\s*#[^\n]*(\n|$)/gm, '');
105
+ const descriptionNoHeadings = description.replaceAll(/^\s*#[^\n]*(\n|$)/gmu, '');
106
106
  const paragraphs = extractParagraphs(descriptionNoHeadings).filter(Boolean);
107
107
  return paragraphs.some((paragraph, parIdx) => {
108
108
  const sentences = extractSentences(paragraph, abbreviationsRegex);
109
109
  const fix = /** @type {import('eslint').Rule.ReportFixer} */fixer => {
110
110
  let text = sourceCode.getText(jsdocNode);
111
111
  if (!/[.:?!]$/u.test(paragraph)) {
112
- const line = paragraph.split('\n').filter(Boolean).pop();
113
- text = text.replace(new RegExp(`${(0, _escapeStringRegexp.default)( /** @type {string} */
112
+ const line = paragraph.split('\n').findLast(Boolean);
113
+ text = text.replace(new RegExp(`${(0, _escapeStringRegexp.default)(/** @type {string} */
114
114
  line)}$`, 'mu'), `${line}.`);
115
115
  }
116
116
  for (const sentence of sentences.filter(sentence_ => {
@@ -180,11 +180,11 @@ const validateDescription = (description, reportOrig, jsdocNode, abbreviationsRe
180
180
  });
181
181
  };
182
182
  var _default = exports.default = (0, _iterateJsdoc.default)(({
183
- sourceCode,
184
183
  context,
185
184
  jsdoc,
186
- report,
187
185
  jsdocNode,
186
+ report,
187
+ sourceCode,
188
188
  utils
189
189
  }) => {
190
190
  const /** @type {{abbreviations: string[], newlineBeforeCapsAssumesBadSentenceEnd: boolean}} */{
@@ -213,7 +213,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
213
213
  index,
214
214
  length
215
215
  } of indices) {
216
- description = description.slice(0, index) + description.slice( /** @type {import('../iterateJsdoc.js').Integer} */index + length);
216
+ description = description.slice(0, index) + description.slice(/** @type {import('../iterateJsdoc.js').Integer} */index + length);
217
217
  }
218
218
  if (validateDescription(description, report, jsdocNode, abbreviationsRegex, sourceCode, {
219
219
  line: jsdoc.source[0].number + 1