eslint-plugin-jsdoc 39.2.7 → 39.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/CONTRIBUTING.md +12 -12
  2. package/README.md +45 -0
  3. package/dist/WarnSettings.js.map +1 -1
  4. package/dist/alignTransform.js.map +1 -1
  5. package/dist/bin/generateRule.js.map +1 -1
  6. package/dist/defaultTagOrder.js.map +1 -1
  7. package/dist/exportParser.js.map +1 -1
  8. package/dist/generateRule.js.map +1 -1
  9. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/iterateJsdoc.js +57 -16
  12. package/dist/iterateJsdoc.js.map +1 -1
  13. package/dist/jsdocUtils.js +5 -1
  14. package/dist/jsdocUtils.js.map +1 -1
  15. package/dist/rules/checkAccess.js.map +1 -1
  16. package/dist/rules/checkAlignment.js.map +1 -1
  17. package/dist/rules/checkExamples.js.map +1 -1
  18. package/dist/rules/checkIndentation.js.map +1 -1
  19. package/dist/rules/checkLineAlignment.js.map +1 -1
  20. package/dist/rules/checkParamNames.js.map +1 -1
  21. package/dist/rules/checkPropertyNames.js.map +1 -1
  22. package/dist/rules/checkSyntax.js.map +1 -1
  23. package/dist/rules/checkTagNames.js.map +1 -1
  24. package/dist/rules/checkTypes.js.map +1 -1
  25. package/dist/rules/checkValues.js +25 -12
  26. package/dist/rules/checkValues.js.map +1 -1
  27. package/dist/rules/emptyTags.js.map +1 -1
  28. package/dist/rules/implementsOnClasses.js.map +1 -1
  29. package/dist/rules/matchDescription.js.map +1 -1
  30. package/dist/rules/matchName.js.map +1 -1
  31. package/dist/rules/multilineBlocks.js.map +1 -1
  32. package/dist/rules/newlineAfterDescription.js.map +1 -1
  33. package/dist/rules/noBadBlocks.js.map +1 -1
  34. package/dist/rules/noDefaults.js.map +1 -1
  35. package/dist/rules/noMissingSyntax.js.map +1 -1
  36. package/dist/rules/noMultiAsterisks.js.map +1 -1
  37. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  38. package/dist/rules/noTypes.js.map +1 -1
  39. package/dist/rules/noUndefinedTypes.js.map +1 -1
  40. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  41. package/dist/rules/requireDescription.js.map +1 -1
  42. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  43. package/dist/rules/requireExample.js.map +1 -1
  44. package/dist/rules/requireFileOverview.js.map +1 -1
  45. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  46. package/dist/rules/requireJsdoc.js.map +1 -1
  47. package/dist/rules/requireParam.js.map +1 -1
  48. package/dist/rules/requireParamDescription.js.map +1 -1
  49. package/dist/rules/requireParamName.js.map +1 -1
  50. package/dist/rules/requireParamType.js.map +1 -1
  51. package/dist/rules/requireProperty.js.map +1 -1
  52. package/dist/rules/requirePropertyDescription.js.map +1 -1
  53. package/dist/rules/requirePropertyName.js.map +1 -1
  54. package/dist/rules/requirePropertyType.js.map +1 -1
  55. package/dist/rules/requireReturns.js.map +1 -1
  56. package/dist/rules/requireReturnsCheck.js.map +1 -1
  57. package/dist/rules/requireReturnsDescription.js.map +1 -1
  58. package/dist/rules/requireReturnsType.js.map +1 -1
  59. package/dist/rules/requireThrows.js.map +1 -1
  60. package/dist/rules/requireYields.js.map +1 -1
  61. package/dist/rules/requireYieldsCheck.js.map +1 -1
  62. package/dist/rules/sortTags.js.map +1 -1
  63. package/dist/rules/tagLines.js.map +1 -1
  64. package/dist/rules/validTypes.js.map +1 -1
  65. package/dist/tagNames.js.map +1 -1
  66. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkIndentation.js"],"names":["maskExcludedContent","str","excludeTags","regContent","RegExp","join","replace","_match","margin","code","repeat","match","length","maskCodeBlocks","sourceCode","jsdocNode","report","context","options","reg","textWithoutCodeBlocks","getText","text","test","lineBreaks","slice","lastIndex","line","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","pattern","type"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,mBAAmB,GAAG,CAACC,GAAD,EAAMC,WAAN,KAAsB;AAChD,QAAMC,UAAU,GAAG,IAAIC,MAAJ,CAAY,yBAAwBF,WAAW,CAACG,IAAZ,CAAiB,GAAjB,CAAsB,kEAA1D,EAA6H,IAA7H,CAAnB;AAEA,SAAOJ,GAAG,CAACK,OAAJ,CAAYH,UAAZ,EAAwB,CAACI,MAAD,EAASC,MAAT,EAAiBC,IAAjB,KAA0B;AACvD,WAAO,CAACD,MAAM,GAAG,IAAV,EAAgBE,MAAhB,CAAuBD,IAAI,CAACE,KAAL,CAAW,MAAX,EAAmBC,MAA1C,CAAP;AACD,GAFM,CAAP;AAGD,CAND;;AAQA,MAAMC,cAAc,GAAIZ,GAAD,IAAS;AAC9B,QAAME,UAAU,GAAG,iFAAnB;AAEA,SAAOF,GAAG,CAACK,OAAJ,CAAYH,UAAZ,EAAwB,CAACI,MAAD,EAASC,MAAT,EAAiBC,IAAjB,KAA0B;AACvD,WAAO,CAACD,MAAM,GAAG,IAAV,EAAgBE,MAAhB,CAAuBD,IAAI,CAACE,KAAL,CAAW,MAAX,EAAmBC,MAA1C,CAAP;AACD,GAFM,CAAP;AAGD,CAND;;eAQe,2BAAa,CAAC;AAC3BE,EAAAA,UAD2B;AAE3BC,EAAAA,SAF2B;AAG3BC,EAAAA,MAH2B;AAI3BC,EAAAA;AAJ2B,CAAD,KAKtB;AACJ,QAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;AACA,QAAM;AACJhB,IAAAA,WAAW,GAAG,CACZ,SADY;AADV,MAIFgB,OAJJ;AAMA,QAAMC,GAAG,GAAG,iCAAZ;AACA,QAAMC,qBAAqB,GAAGP,cAAc,CAACC,UAAU,CAACO,OAAX,CAAmBN,SAAnB,CAAD,CAA5C;AACA,QAAMO,IAAI,GAAGpB,WAAW,CAACU,MAAZ,GAAqBZ,mBAAmB,CAACoB,qBAAD,EAAwBlB,WAAxB,CAAxC,GAA+EkB,qBAA5F;;AAEA,MAAID,GAAG,CAACI,IAAJ,CAASD,IAAT,CAAJ,EAAoB;AAClB,UAAME,UAAU,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAcN,GAAG,CAACO,SAAlB,EAA6Bf,KAA7B,CAAmC,MAAnC,KAA8C,EAAjE;AACAK,IAAAA,MAAM,CAAC,+BAAD,EAAkC,IAAlC,EAAwC;AAC5CW,MAAAA,IAAI,EAAEH,UAAU,CAACZ;AAD2B,KAAxC,CAAN;AAGD;AACF,CAvBc,EAuBZ;AACDgB,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,8CADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVjC,QAAAA,WAAW,EAAE;AACXkC,UAAAA,KAAK,EAAE;AACLC,YAAAA,OAAO,EAAE,QADJ;AAELC,YAAAA,IAAI,EAAE;AAFD,WADI;AAKXA,UAAAA,IAAI,EAAE;AALK;AADH,OAFd;AAWEA,MAAAA,IAAI,EAAE;AAXR,KADM,CALJ;AAoBJA,IAAAA,IAAI,EAAE;AApBF;AAFL,CAvBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst maskExcludedContent = (str, excludeTags) => {\n const regContent = new RegExp(`([ \\\\t]+\\\\*)[ \\\\t]@(?:${excludeTags.join('|')})(?=[ \\\\n])([\\\\w|\\\\W]*?\\\\n)(?=[ \\\\t]*\\\\*(?:[ \\\\t]*@\\\\w+\\\\s|\\\\/))`, 'gu');\n\n return str.replace(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gu).length);\n });\n};\n\nconst maskCodeBlocks = (str) => {\n const regContent = /([ \\t]+\\*)[ \\t]```[^\\n]*?([\\w|\\W]*?\\n)(?=[ \\t]*\\*(?:[ \\t]*(?:```|@\\w+\\s)|\\/))/gu;\n\n return str.replace(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gu).length);\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdocNode,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n excludeTags = [\n 'example',\n ],\n } = options;\n\n const reg = /^(?:\\/?\\**|[ \\t]*)\\*[ \\t]{2}/gmu;\n const textWithoutCodeBlocks = maskCodeBlocks(sourceCode.getText(jsdocNode));\n const text = excludeTags.length ? maskExcludedContent(textWithoutCodeBlocks, excludeTags) : textWithoutCodeBlocks;\n\n if (reg.test(text)) {\n const lineBreaks = text.slice(0, reg.lastIndex).match(/\\n/gu) || [];\n report('There must be no indentation.', null, {\n line: lineBreaks.length,\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid padding inside JSDoc blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-indentation',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n excludeTags: {\n items: {\n pattern: '^\\\\S+$',\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"checkIndentation.js"}
1
+ {"version":3,"file":"checkIndentation.js","names":["maskExcludedContent","str","excludeTags","regContent","RegExp","join","replace","_match","margin","code","repeat","match","length","maskCodeBlocks","iterateJsdoc","sourceCode","jsdocNode","report","context","options","reg","textWithoutCodeBlocks","getText","text","test","lineBreaks","slice","lastIndex","line","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","pattern","type"],"sources":["../../src/rules/checkIndentation.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst maskExcludedContent = (str, excludeTags) => {\n const regContent = new RegExp(`([ \\\\t]+\\\\*)[ \\\\t]@(?:${excludeTags.join('|')})(?=[ \\\\n])([\\\\w|\\\\W]*?\\\\n)(?=[ \\\\t]*\\\\*(?:[ \\\\t]*@\\\\w+\\\\s|\\\\/))`, 'gu');\n\n return str.replace(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gu).length);\n });\n};\n\nconst maskCodeBlocks = (str) => {\n const regContent = /([ \\t]+\\*)[ \\t]```[^\\n]*?([\\w|\\W]*?\\n)(?=[ \\t]*\\*(?:[ \\t]*(?:```|@\\w+\\s)|\\/))/gu;\n\n return str.replace(regContent, (_match, margin, code) => {\n return (margin + '\\n').repeat(code.match(/\\n/gu).length);\n });\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdocNode,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n excludeTags = [\n 'example',\n ],\n } = options;\n\n const reg = /^(?:\\/?\\**|[ \\t]*)\\*[ \\t]{2}/gmu;\n const textWithoutCodeBlocks = maskCodeBlocks(sourceCode.getText(jsdocNode));\n const text = excludeTags.length ? maskExcludedContent(textWithoutCodeBlocks, excludeTags) : textWithoutCodeBlocks;\n\n if (reg.test(text)) {\n const lineBreaks = text.slice(0, reg.lastIndex).match(/\\n/gu) || [];\n report('There must be no indentation.', null, {\n line: lineBreaks.length,\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid padding inside JSDoc blocks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-indentation',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n excludeTags: {\n items: {\n pattern: '^\\\\S+$',\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,mBAAmB,GAAG,CAACC,GAAD,EAAMC,WAAN,KAAsB;EAChD,MAAMC,UAAU,GAAG,IAAIC,MAAJ,CAAY,yBAAwBF,WAAW,CAACG,IAAZ,CAAiB,GAAjB,CAAsB,kEAA1D,EAA6H,IAA7H,CAAnB;EAEA,OAAOJ,GAAG,CAACK,OAAJ,CAAYH,UAAZ,EAAwB,CAACI,MAAD,EAASC,MAAT,EAAiBC,IAAjB,KAA0B;IACvD,OAAO,CAACD,MAAM,GAAG,IAAV,EAAgBE,MAAhB,CAAuBD,IAAI,CAACE,KAAL,CAAW,MAAX,EAAmBC,MAA1C,CAAP;EACD,CAFM,CAAP;AAGD,CAND;;AAQA,MAAMC,cAAc,GAAIZ,GAAD,IAAS;EAC9B,MAAME,UAAU,GAAG,iFAAnB;EAEA,OAAOF,GAAG,CAACK,OAAJ,CAAYH,UAAZ,EAAwB,CAACI,MAAD,EAASC,MAAT,EAAiBC,IAAjB,KAA0B;IACvD,OAAO,CAACD,MAAM,GAAG,IAAV,EAAgBE,MAAhB,CAAuBD,IAAI,CAACE,KAAL,CAAW,MAAX,EAAmBC,MAA1C,CAAP;EACD,CAFM,CAAP;AAGD,CAND;;eAQe,IAAAE,qBAAA,EAAa,CAAC;EAC3BC,UAD2B;EAE3BC,SAF2B;EAG3BC,MAH2B;EAI3BC;AAJ2B,CAAD,KAKtB;EACJ,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;EACA,MAAM;IACJjB,WAAW,GAAG,CACZ,SADY;EADV,IAIFiB,OAJJ;EAMA,MAAMC,GAAG,GAAG,iCAAZ;EACA,MAAMC,qBAAqB,GAAGR,cAAc,CAACE,UAAU,CAACO,OAAX,CAAmBN,SAAnB,CAAD,CAA5C;EACA,MAAMO,IAAI,GAAGrB,WAAW,CAACU,MAAZ,GAAqBZ,mBAAmB,CAACqB,qBAAD,EAAwBnB,WAAxB,CAAxC,GAA+EmB,qBAA5F;;EAEA,IAAID,GAAG,CAACI,IAAJ,CAASD,IAAT,CAAJ,EAAoB;IAClB,MAAME,UAAU,GAAGF,IAAI,CAACG,KAAL,CAAW,CAAX,EAAcN,GAAG,CAACO,SAAlB,EAA6BhB,KAA7B,CAAmC,MAAnC,KAA8C,EAAjE;IACAM,MAAM,CAAC,+BAAD,EAAkC,IAAlC,EAAwC;MAC5CW,IAAI,EAAEH,UAAU,CAACb;IAD2B,CAAxC,CAAN;EAGD;AACF,CAvBc,EAuBZ;EACDiB,gBAAgB,EAAE,IADjB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,8CADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVlC,WAAW,EAAE;UACXmC,KAAK,EAAE;YACLC,OAAO,EAAE,QADJ;YAELC,IAAI,EAAE;UAFD,CADI;UAKXA,IAAI,EAAE;QALK;MADH,CAFd;MAWEA,IAAI,EAAE;IAXR,CADM,CALJ;IAoBJA,IAAI,EAAE;EApBF;AAFL,CAvBY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkLineAlignment.js"],"names":["flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","setTag","reportJSDoc","checkAlignment","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","transform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","context","applicableTags","options","includes","foundTags","getPresentTags","iterateAllJsdocs","meta","docs","description","url","fixable","schema","enum","type","additionalProperties","properties","postDelimiter","postName","postTag","postType","default","items"],"mappings":"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","sourcesContent":["import {\n transforms,\n} from 'comment-parser';\nimport alignTransform from '../alignTransform';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n let spacerProps;\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n });\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\nconst checkAlignment = ({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' + jsdocNode.value + '*/';\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n indent,\n jsdoc,\n jsdocNode,\n report,\n context,\n utils,\n}) => {\n const {\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return',\n ],\n preserveMainDescriptionPostDelimiter,\n customSpacings,\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!jsdocNode.value.includes('\\n')) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n for (const tag of foundTags) {\n checkNotAlignedPerTag(utils, tag, customSpacings);\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-line-alignment',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n properties: {\n postDelimiter: {\n type: 'integer',\n },\n postName: {\n type: 'integer',\n },\n postTag: {\n type: 'integer',\n },\n postType: {\n type: 'integer',\n },\n },\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"file":"checkLineAlignment.js"}
1
+ {"version":3,"file":"checkLineAlignment.js","names":["flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","setTag","reportJSDoc","checkAlignment","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","iterateAllJsdocs","meta","docs","description","url","fixable","schema","enum","type","additionalProperties","properties","postDelimiter","postName","postTag","postType","default","items"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import {\n transforms,\n} from 'comment-parser';\nimport alignTransform from '../alignTransform';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n let spacerProps;\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n });\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\nconst checkAlignment = ({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' + jsdocNode.value + '*/';\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n indent,\n jsdoc,\n jsdocNode,\n report,\n context,\n utils,\n}) => {\n const {\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return',\n ],\n preserveMainDescriptionPostDelimiter,\n customSpacings,\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!jsdocNode.value.includes('\\n')) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n for (const tag of foundTags) {\n checkNotAlignedPerTag(utils, tag, customSpacings);\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-line-alignment',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n properties: {\n postDelimiter: {\n type: 'integer',\n },\n postName: {\n type: 'integer',\n },\n postTag: {\n type: 'integer',\n },\n postType: {\n type: 'integer',\n },\n },\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n type: 'boolean',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkParamNames.js"],"names":["validateParameterNames","targetTagName","allowExtraTrailingParamDocs","checkDestructured","checkRestProperty","checkTypesRegex","disableExtraPropertyReporting","enableFixer","functionParameterNames","jsdoc","utils","report","paramTags","Object","entries","tags","filter","tag","paramTagsNonNested","name","includes","dotted","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","reportJSDoc","removeTag","functionParameterName","Array","isArray","type","search","parameterName","names","properties","hasPropertyRest","rests","annotationParamName","undefined","trim","tagName","expectedNames","map","actualNames","paramTag","actualTypes","missingProperties","notCheckingNames","notCheckingName","startsWith","actualNameIdx","findIndex","actualName","comparePaths","missingIndex","pathDoesNotBeginWith","line","source","number","length","push","tagPlacement","hasMissing","missingProperty","extraProperties","match","prop","split","extraProperty","funcParamName","item","join","validateParameterNamesDeep","_allowExtraTrailingParamDocs","jsdocParameterNames","lastRealParameter","jsdocParameterName","isPropertyPath","pathRootNodeName","slice","indexOf","endsWith","context","checkTypesPattern","useDefaultObjectProperties","options","getRegexFromString","jsdocParameterNamesDeep","getJsdocTagsDeep","getFunctionParameterNames","getPreferredTagName","isError","meta","docs","description","url","fixable","schema","additionalProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @param {string} targetTagName\n * @param {boolean} allowExtraTrailingParamDocs\n * @param {boolean} checkDestructured\n * @param {boolean} checkRestProperty\n * @param {RegExp} checkTypesRegex\n * @param {boolean} disableExtraPropertyReporting\n * @param {boolean} enableFixer\n * @param {Array<string>} functionParameterNames\n * @param jsdoc\n * @param utils\n * @param report\n * @returns {boolean}\n */\nconst validateParameterNames = (\n targetTagName,\n allowExtraTrailingParamDocs,\n checkDestructured,\n checkRestProperty,\n checkTypesRegex,\n disableExtraPropertyReporting,\n enableFixer,\n functionParameterNames, jsdoc, utils, report,\n) => {\n const paramTags = Object.entries(jsdoc.tags).filter(([\n , tag,\n ]) => {\n return tag.tag === targetTagName;\n });\n const paramTagsNonNested = paramTags.filter(([\n , tag,\n ]) => {\n return !tag.name.includes('.');\n });\n\n let dotted = 0;\n\n // eslint-disable-next-line complexity\n return paramTags.some(([\n , tag,\n ], index) => {\n let tagsIndex;\n const dupeTagInfo = paramTags.find(([\n tgsIndex,\n tg,\n ], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], enableFixer ? () => {\n utils.removeTag(tagsIndex);\n } : null);\n\n return true;\n }\n\n if (tag.name.includes('.')) {\n dotted++;\n\n return false;\n }\n\n const functionParameterName = functionParameterNames[index - dotted];\n\n if (!functionParameterName) {\n if (allowExtraTrailingParamDocs) {\n return false;\n }\n\n report(\n `@${targetTagName} \"${tag.name}\" does not match an existing function parameter.`,\n null,\n tag,\n );\n\n return true;\n }\n\n if (Array.isArray(functionParameterName)) {\n if (!checkDestructured) {\n return false;\n }\n\n if (tag.type && tag.type.search(checkTypesRegex) === -1) {\n return false;\n }\n\n const [\n parameterName,\n {\n names: properties,\n hasPropertyRest,\n rests,\n annotationParamName,\n },\n ] = functionParameterName;\n if (annotationParamName !== undefined) {\n const name = tag.name.trim();\n if (name !== annotationParamName) {\n report(`@${targetTagName} \"${name}\" does not match parameter name \"${annotationParamName}\"`, null, tag);\n }\n }\n\n const tagName = parameterName === undefined ? tag.name.trim() : parameterName;\n const expectedNames = properties.map((name) => {\n return `${tagName}.${name}`;\n });\n const actualNames = paramTags.map(([\n , paramTag,\n ]) => {\n return paramTag.name.trim();\n });\n const actualTypes = paramTags.map(([\n , paramTag,\n ]) => {\n return paramTag.type;\n });\n\n const missingProperties = [];\n const notCheckingNames = [];\n\n for (const [\n idx,\n name,\n ] of expectedNames.entries()) {\n if (notCheckingNames.some((notCheckingName) => {\n return name.startsWith(notCheckingName);\n })) {\n continue;\n }\n\n const actualNameIdx = actualNames.findIndex((actualName) => {\n return utils.comparePaths(name)(actualName);\n });\n if (actualNameIdx === -1) {\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const missingIndex = actualNames.findIndex((actualName) => {\n return utils.pathDoesNotBeginWith(name, actualName);\n });\n const line = tag.source[0].number - 1 + (missingIndex > -1 ? missingIndex : actualNames.length);\n missingProperties.push({\n name,\n tagPlacement: {\n line: line === 0 ? 1 : line,\n },\n });\n } else if (actualTypes[actualNameIdx].search(checkTypesRegex) === -1 && actualTypes[actualNameIdx] !== '') {\n notCheckingNames.push(name);\n }\n }\n\n const hasMissing = missingProperties.length;\n if (hasMissing) {\n for (const {\n tagPlacement,\n name: missingProperty,\n } of missingProperties) {\n report(`Missing @${targetTagName} \"${missingProperty}\"`, null, tagPlacement);\n }\n }\n\n if (!hasPropertyRest || checkRestProperty) {\n const extraProperties = [];\n for (const [\n idx,\n name,\n ] of actualNames.entries()) {\n const match = name.startsWith(tag.name.trim() + '.');\n if (\n match && !expectedNames.some(\n utils.comparePaths(name),\n ) && !utils.comparePaths(name)(tag.name) &&\n (!disableExtraPropertyReporting || properties.some((prop) => {\n return prop.split('.').length >= name.split('.').length - 1;\n }))\n ) {\n extraProperties.push([\n name, paramTags[idx][1],\n ]);\n }\n }\n\n if (extraProperties.length) {\n for (const [\n extraProperty,\n tg,\n ] of extraProperties) {\n report(`@${targetTagName} \"${extraProperty}\" does not exist on ${tag.name}`, null, tg);\n }\n\n return true;\n }\n }\n\n return hasMissing;\n }\n\n let funcParamName;\n if (typeof functionParameterName === 'object') {\n const {\n name,\n } = functionParameterName;\n funcParamName = name;\n } else {\n funcParamName = functionParameterName;\n }\n\n if (funcParamName !== tag.name.trim()) {\n // Todo: Improve for array or object child items\n const actualNames = paramTagsNonNested.map(([\n , {\n name,\n },\n ]) => {\n return name.trim();\n });\n const expectedNames = functionParameterNames.map((item, idx) => {\n if (item?.[1]?.names) {\n return actualNames[idx];\n }\n\n return item;\n }).join(', ');\n\n report(\n `Expected @${targetTagName} names to be \"${expectedNames}\". Got \"${actualNames.join(', ')}\".`,\n null,\n tag,\n );\n\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * @param {string} targetTagName\n * @param {boolean} _allowExtraTrailingParamDocs\n * @param {Array<string>} jsdocParameterNames\n * @param jsdoc\n * @param {Function} report\n * @returns {boolean}\n */\nconst validateParameterNamesDeep = (\n targetTagName, _allowExtraTrailingParamDocs,\n jsdocParameterNames, jsdoc, report,\n) => {\n let lastRealParameter;\n\n return jsdocParameterNames.some(({\n name: jsdocParameterName,\n idx,\n }) => {\n const isPropertyPath = jsdocParameterName.includes('.');\n\n if (isPropertyPath) {\n if (!lastRealParameter) {\n report(`@${targetTagName} path declaration (\"${jsdocParameterName}\") appears before any real parameter.`, null, jsdoc.tags[idx]);\n\n return true;\n }\n\n let pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));\n\n if (pathRootNodeName.endsWith('[]')) {\n pathRootNodeName = pathRootNodeName.slice(0, -2);\n }\n\n if (pathRootNodeName !== lastRealParameter) {\n report(\n `@${targetTagName} path declaration (\"${jsdocParameterName}\") root node name (\"${pathRootNodeName}\") ` +\n `does not match previous real parameter name (\"${lastRealParameter}\").`,\n null,\n jsdoc.tags[idx],\n );\n\n return true;\n }\n } else {\n lastRealParameter = jsdocParameterName;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n const {\n allowExtraTrailingParamDocs,\n checkDestructured = true,\n checkRestProperty = false,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = false,\n useDefaultObjectProperties = false,\n disableExtraPropertyReporting = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const jsdocParameterNamesDeep = utils.getJsdocTagsDeep('param');\n if (!jsdocParameterNamesDeep.length) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const targetTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n const isError = validateParameterNames(\n targetTagName,\n allowExtraTrailingParamDocs,\n checkDestructured,\n checkRestProperty,\n checkTypesRegex,\n disableExtraPropertyReporting,\n enableFixer,\n functionParameterNames,\n jsdoc,\n utils,\n report,\n );\n\n if (isError || !checkDestructured) {\n return;\n }\n\n validateParameterNamesDeep(\n targetTagName, allowExtraTrailingParamDocs, jsdocParameterNamesDeep, jsdoc, report,\n );\n}, {\n meta: {\n docs: {\n description: 'Ensures that parameter names in JSDoc match those in the function declaration.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-param-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowExtraTrailingParamDocs: {\n type: 'boolean',\n },\n checkDestructured: {\n type: 'boolean',\n },\n checkRestProperty: {\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n disableExtraPropertyReporting: {\n type: 'boolean',\n },\n enableFixer: {\n type: 'boolean',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkParamNames.js"}
1
+ {"version":3,"file":"checkParamNames.js","names":["validateParameterNames","targetTagName","allowExtraTrailingParamDocs","checkDestructured","checkRestProperty","checkTypesRegex","disableExtraPropertyReporting","enableFixer","functionParameterNames","jsdoc","utils","report","paramTags","Object","entries","tags","filter","tag","paramTagsNonNested","name","includes","dotted","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","reportJSDoc","removeTag","functionParameterName","Array","isArray","type","search","parameterName","names","properties","hasPropertyRest","rests","annotationParamName","undefined","trim","tagName","expectedNames","map","actualNames","paramTag","actualTypes","missingProperties","notCheckingNames","notCheckingName","startsWith","actualNameIdx","findIndex","actualName","comparePaths","missingIndex","pathDoesNotBeginWith","line","source","number","length","push","tagPlacement","hasMissing","missingProperty","extraProperties","match","prop","split","extraProperty","funcParamName","item","join","validateParameterNamesDeep","_allowExtraTrailingParamDocs","jsdocParameterNames","lastRealParameter","jsdocParameterName","isPropertyPath","pathRootNodeName","slice","indexOf","endsWith","iterateJsdoc","context","checkTypesPattern","useDefaultObjectProperties","options","getRegexFromString","jsdocParameterNamesDeep","getJsdocTagsDeep","getFunctionParameterNames","getPreferredTagName","isError","meta","docs","description","url","fixable","schema","additionalProperties"],"sources":["../../src/rules/checkParamNames.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @param {string} targetTagName\n * @param {boolean} allowExtraTrailingParamDocs\n * @param {boolean} checkDestructured\n * @param {boolean} checkRestProperty\n * @param {RegExp} checkTypesRegex\n * @param {boolean} disableExtraPropertyReporting\n * @param {boolean} enableFixer\n * @param {Array<string>} functionParameterNames\n * @param jsdoc\n * @param utils\n * @param report\n * @returns {boolean}\n */\nconst validateParameterNames = (\n targetTagName,\n allowExtraTrailingParamDocs,\n checkDestructured,\n checkRestProperty,\n checkTypesRegex,\n disableExtraPropertyReporting,\n enableFixer,\n functionParameterNames, jsdoc, utils, report,\n) => {\n const paramTags = Object.entries(jsdoc.tags).filter(([\n , tag,\n ]) => {\n return tag.tag === targetTagName;\n });\n const paramTagsNonNested = paramTags.filter(([\n , tag,\n ]) => {\n return !tag.name.includes('.');\n });\n\n let dotted = 0;\n\n // eslint-disable-next-line complexity\n return paramTags.some(([\n , tag,\n ], index) => {\n let tagsIndex;\n const dupeTagInfo = paramTags.find(([\n tgsIndex,\n tg,\n ], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], enableFixer ? () => {\n utils.removeTag(tagsIndex);\n } : null);\n\n return true;\n }\n\n if (tag.name.includes('.')) {\n dotted++;\n\n return false;\n }\n\n const functionParameterName = functionParameterNames[index - dotted];\n\n if (!functionParameterName) {\n if (allowExtraTrailingParamDocs) {\n return false;\n }\n\n report(\n `@${targetTagName} \"${tag.name}\" does not match an existing function parameter.`,\n null,\n tag,\n );\n\n return true;\n }\n\n if (Array.isArray(functionParameterName)) {\n if (!checkDestructured) {\n return false;\n }\n\n if (tag.type && tag.type.search(checkTypesRegex) === -1) {\n return false;\n }\n\n const [\n parameterName,\n {\n names: properties,\n hasPropertyRest,\n rests,\n annotationParamName,\n },\n ] = functionParameterName;\n if (annotationParamName !== undefined) {\n const name = tag.name.trim();\n if (name !== annotationParamName) {\n report(`@${targetTagName} \"${name}\" does not match parameter name \"${annotationParamName}\"`, null, tag);\n }\n }\n\n const tagName = parameterName === undefined ? tag.name.trim() : parameterName;\n const expectedNames = properties.map((name) => {\n return `${tagName}.${name}`;\n });\n const actualNames = paramTags.map(([\n , paramTag,\n ]) => {\n return paramTag.name.trim();\n });\n const actualTypes = paramTags.map(([\n , paramTag,\n ]) => {\n return paramTag.type;\n });\n\n const missingProperties = [];\n const notCheckingNames = [];\n\n for (const [\n idx,\n name,\n ] of expectedNames.entries()) {\n if (notCheckingNames.some((notCheckingName) => {\n return name.startsWith(notCheckingName);\n })) {\n continue;\n }\n\n const actualNameIdx = actualNames.findIndex((actualName) => {\n return utils.comparePaths(name)(actualName);\n });\n if (actualNameIdx === -1) {\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const missingIndex = actualNames.findIndex((actualName) => {\n return utils.pathDoesNotBeginWith(name, actualName);\n });\n const line = tag.source[0].number - 1 + (missingIndex > -1 ? missingIndex : actualNames.length);\n missingProperties.push({\n name,\n tagPlacement: {\n line: line === 0 ? 1 : line,\n },\n });\n } else if (actualTypes[actualNameIdx].search(checkTypesRegex) === -1 && actualTypes[actualNameIdx] !== '') {\n notCheckingNames.push(name);\n }\n }\n\n const hasMissing = missingProperties.length;\n if (hasMissing) {\n for (const {\n tagPlacement,\n name: missingProperty,\n } of missingProperties) {\n report(`Missing @${targetTagName} \"${missingProperty}\"`, null, tagPlacement);\n }\n }\n\n if (!hasPropertyRest || checkRestProperty) {\n const extraProperties = [];\n for (const [\n idx,\n name,\n ] of actualNames.entries()) {\n const match = name.startsWith(tag.name.trim() + '.');\n if (\n match && !expectedNames.some(\n utils.comparePaths(name),\n ) && !utils.comparePaths(name)(tag.name) &&\n (!disableExtraPropertyReporting || properties.some((prop) => {\n return prop.split('.').length >= name.split('.').length - 1;\n }))\n ) {\n extraProperties.push([\n name, paramTags[idx][1],\n ]);\n }\n }\n\n if (extraProperties.length) {\n for (const [\n extraProperty,\n tg,\n ] of extraProperties) {\n report(`@${targetTagName} \"${extraProperty}\" does not exist on ${tag.name}`, null, tg);\n }\n\n return true;\n }\n }\n\n return hasMissing;\n }\n\n let funcParamName;\n if (typeof functionParameterName === 'object') {\n const {\n name,\n } = functionParameterName;\n funcParamName = name;\n } else {\n funcParamName = functionParameterName;\n }\n\n if (funcParamName !== tag.name.trim()) {\n // Todo: Improve for array or object child items\n const actualNames = paramTagsNonNested.map(([\n , {\n name,\n },\n ]) => {\n return name.trim();\n });\n const expectedNames = functionParameterNames.map((item, idx) => {\n if (item?.[1]?.names) {\n return actualNames[idx];\n }\n\n return item;\n }).join(', ');\n\n report(\n `Expected @${targetTagName} names to be \"${expectedNames}\". Got \"${actualNames.join(', ')}\".`,\n null,\n tag,\n );\n\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * @param {string} targetTagName\n * @param {boolean} _allowExtraTrailingParamDocs\n * @param {Array<string>} jsdocParameterNames\n * @param jsdoc\n * @param {Function} report\n * @returns {boolean}\n */\nconst validateParameterNamesDeep = (\n targetTagName, _allowExtraTrailingParamDocs,\n jsdocParameterNames, jsdoc, report,\n) => {\n let lastRealParameter;\n\n return jsdocParameterNames.some(({\n name: jsdocParameterName,\n idx,\n }) => {\n const isPropertyPath = jsdocParameterName.includes('.');\n\n if (isPropertyPath) {\n if (!lastRealParameter) {\n report(`@${targetTagName} path declaration (\"${jsdocParameterName}\") appears before any real parameter.`, null, jsdoc.tags[idx]);\n\n return true;\n }\n\n let pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));\n\n if (pathRootNodeName.endsWith('[]')) {\n pathRootNodeName = pathRootNodeName.slice(0, -2);\n }\n\n if (pathRootNodeName !== lastRealParameter) {\n report(\n `@${targetTagName} path declaration (\"${jsdocParameterName}\") root node name (\"${pathRootNodeName}\") ` +\n `does not match previous real parameter name (\"${lastRealParameter}\").`,\n null,\n jsdoc.tags[idx],\n );\n\n return true;\n }\n } else {\n lastRealParameter = jsdocParameterName;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n const {\n allowExtraTrailingParamDocs,\n checkDestructured = true,\n checkRestProperty = false,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = false,\n useDefaultObjectProperties = false,\n disableExtraPropertyReporting = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const jsdocParameterNamesDeep = utils.getJsdocTagsDeep('param');\n if (!jsdocParameterNamesDeep.length) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const targetTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n const isError = validateParameterNames(\n targetTagName,\n allowExtraTrailingParamDocs,\n checkDestructured,\n checkRestProperty,\n checkTypesRegex,\n disableExtraPropertyReporting,\n enableFixer,\n functionParameterNames,\n jsdoc,\n utils,\n report,\n );\n\n if (isError || !checkDestructured) {\n return;\n }\n\n validateParameterNamesDeep(\n targetTagName, allowExtraTrailingParamDocs, jsdocParameterNamesDeep, jsdoc, report,\n );\n}, {\n meta: {\n docs: {\n description: 'Ensures that parameter names in JSDoc match those in the function declaration.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-param-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowExtraTrailingParamDocs: {\n type: 'boolean',\n },\n checkDestructured: {\n type: 'boolean',\n },\n checkRestProperty: {\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n disableExtraPropertyReporting: {\n type: 'boolean',\n },\n enableFixer: {\n type: 'boolean',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkPropertyNames.js"],"names":["validatePropertyNames","targetTagName","enableFixer","jsdoc","utils","propertyTags","Object","entries","tags","filter","tag","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","name","reportJSDoc","removeTag","validatePropertyNamesDeep","jsdocPropertyNames","report","lastRealProperty","jsdocPropertyName","isPropertyPath","includes","pathRootNodeName","slice","indexOf","endsWith","context","options","jsdocPropertyNamesDeep","getJsdocTagsDeep","length","getPreferredTagName","tagName","isError","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","type"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @param {string} targetTagName\n * @param {boolean} enableFixer\n * @param jsdoc\n * @param utils\n * @returns {boolean}\n */\nconst validatePropertyNames = (\n targetTagName,\n enableFixer,\n jsdoc, utils,\n) => {\n const propertyTags = Object.entries(jsdoc.tags).filter(([\n , tag,\n ]) => {\n return tag.tag === targetTagName;\n });\n\n return propertyTags.some(([\n , tag,\n ], index) => {\n let tagsIndex;\n const dupeTagInfo = propertyTags.find(([\n tgsIndex,\n tg,\n ], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], enableFixer ? () => {\n utils.removeTag(tagsIndex);\n } : null);\n\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * @param {string} targetTagName\n * @param {string[]} jsdocPropertyNames\n * @param jsdoc\n * @param {Function} report\n */\nconst validatePropertyNamesDeep = (\n targetTagName,\n jsdocPropertyNames, jsdoc, report,\n) => {\n let lastRealProperty;\n\n return jsdocPropertyNames.some(({\n name: jsdocPropertyName,\n idx,\n }) => {\n const isPropertyPath = jsdocPropertyName.includes('.');\n\n if (isPropertyPath) {\n if (!lastRealProperty) {\n report(`@${targetTagName} path declaration (\"${jsdocPropertyName}\") appears before any real property.`, null, jsdoc.tags[idx]);\n\n return true;\n }\n\n let pathRootNodeName = jsdocPropertyName.slice(0, jsdocPropertyName.indexOf('.'));\n\n if (pathRootNodeName.endsWith('[]')) {\n pathRootNodeName = pathRootNodeName.slice(0, -2);\n }\n\n if (pathRootNodeName !== lastRealProperty) {\n report(\n `@${targetTagName} path declaration (\"${jsdocPropertyName}\") root node name (\"${pathRootNodeName}\") ` +\n `does not match previous real property name (\"${lastRealProperty}\").`,\n null,\n jsdoc.tags[idx],\n );\n\n return true;\n }\n } else {\n lastRealProperty = jsdocPropertyName;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n const {\n enableFixer = false,\n } = context.options[0] || {};\n const jsdocPropertyNamesDeep = utils.getJsdocTagsDeep('property');\n if (!jsdocPropertyNamesDeep.length) {\n return;\n }\n\n const targetTagName = utils.getPreferredTagName({\n tagName: 'property',\n });\n const isError = validatePropertyNames(\n targetTagName,\n enableFixer,\n jsdoc,\n utils,\n );\n\n if (isError) {\n return;\n }\n\n validatePropertyNamesDeep(\n targetTagName, jsdocPropertyNamesDeep, jsdoc, report,\n );\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-property-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n enableFixer: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkPropertyNames.js"}
1
+ {"version":3,"file":"checkPropertyNames.js","names":["validatePropertyNames","targetTagName","enableFixer","jsdoc","utils","propertyTags","Object","entries","tags","filter","tag","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","name","reportJSDoc","removeTag","validatePropertyNamesDeep","jsdocPropertyNames","report","lastRealProperty","jsdocPropertyName","isPropertyPath","includes","pathRootNodeName","slice","indexOf","endsWith","iterateJsdoc","context","options","jsdocPropertyNamesDeep","getJsdocTagsDeep","length","getPreferredTagName","tagName","isError","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","type"],"sources":["../../src/rules/checkPropertyNames.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @param {string} targetTagName\n * @param {boolean} enableFixer\n * @param jsdoc\n * @param utils\n * @returns {boolean}\n */\nconst validatePropertyNames = (\n targetTagName,\n enableFixer,\n jsdoc, utils,\n) => {\n const propertyTags = Object.entries(jsdoc.tags).filter(([\n , tag,\n ]) => {\n return tag.tag === targetTagName;\n });\n\n return propertyTags.some(([\n , tag,\n ], index) => {\n let tagsIndex;\n const dupeTagInfo = propertyTags.find(([\n tgsIndex,\n tg,\n ], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], enableFixer ? () => {\n utils.removeTag(tagsIndex);\n } : null);\n\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * @param {string} targetTagName\n * @param {string[]} jsdocPropertyNames\n * @param jsdoc\n * @param {Function} report\n */\nconst validatePropertyNamesDeep = (\n targetTagName,\n jsdocPropertyNames, jsdoc, report,\n) => {\n let lastRealProperty;\n\n return jsdocPropertyNames.some(({\n name: jsdocPropertyName,\n idx,\n }) => {\n const isPropertyPath = jsdocPropertyName.includes('.');\n\n if (isPropertyPath) {\n if (!lastRealProperty) {\n report(`@${targetTagName} path declaration (\"${jsdocPropertyName}\") appears before any real property.`, null, jsdoc.tags[idx]);\n\n return true;\n }\n\n let pathRootNodeName = jsdocPropertyName.slice(0, jsdocPropertyName.indexOf('.'));\n\n if (pathRootNodeName.endsWith('[]')) {\n pathRootNodeName = pathRootNodeName.slice(0, -2);\n }\n\n if (pathRootNodeName !== lastRealProperty) {\n report(\n `@${targetTagName} path declaration (\"${jsdocPropertyName}\") root node name (\"${pathRootNodeName}\") ` +\n `does not match previous real property name (\"${lastRealProperty}\").`,\n null,\n jsdoc.tags[idx],\n );\n\n return true;\n }\n } else {\n lastRealProperty = jsdocPropertyName;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n utils,\n}) => {\n const {\n enableFixer = false,\n } = context.options[0] || {};\n const jsdocPropertyNamesDeep = utils.getJsdocTagsDeep('property');\n if (!jsdocPropertyNamesDeep.length) {\n return;\n }\n\n const targetTagName = utils.getPreferredTagName({\n tagName: 'property',\n });\n const isError = validatePropertyNames(\n targetTagName,\n enableFixer,\n jsdoc,\n utils,\n );\n\n if (isError) {\n return;\n }\n\n validatePropertyNamesDeep(\n targetTagName, jsdocPropertyNamesDeep, jsdoc, report,\n );\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-property-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n enableFixer: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkSyntax.js"],"names":["jsdoc","report","settings","mode","tag","tags","type","slice","iterateAllJsdocs","meta","docs","description","url"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,KAD2B;AAE3BC,EAAAA,MAF2B;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAM;AACJC,IAAAA;AADI,MAEFD,QAFJ,CADI,CAKJ;;AACA,MAAIC,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,YAAjC,EAA+C;AAC7C,SAAK,MAAMC,GAAX,IAAkBJ,KAAK,CAACK,IAAxB,EAA8B;AAC5B,UAAID,GAAG,CAACE,IAAJ,CAASC,KAAT,CAAe,CAAC,CAAhB,MAAuB,GAA3B,EAAgC;AAC9BN,QAAAA,MAAM,CAAC,qDAAD,EAAwD,IAAxD,EAA8DG,GAA9D,CAAN;AACA;AACD;AACF;AACF;AACF,CAlBc,EAkBZ;AACDI,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,oGADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJN,IAAAA,IAAI,EAAE;AALF;AAFL,CAlBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n settings,\n}) => {\n const {\n mode,\n } = settings;\n\n // Don't check for \"permissive\" and \"closure\"\n if (mode === 'jsdoc' || mode === 'typescript') {\n for (const tag of jsdoc.tags) {\n if (tag.type.slice(-1) === '=') {\n report('Syntax should not be Google Closure Compiler style.', null, tag);\n break;\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-syntax',\n },\n type: 'suggestion',\n },\n});\n"],"file":"checkSyntax.js"}
1
+ {"version":3,"file":"checkSyntax.js","names":["iterateJsdoc","jsdoc","report","settings","mode","tag","tags","type","slice","iterateAllJsdocs","meta","docs","description","url"],"sources":["../../src/rules/checkSyntax.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n settings,\n}) => {\n const {\n mode,\n } = settings;\n\n // Don't check for \"permissive\" and \"closure\"\n if (mode === 'jsdoc' || mode === 'typescript') {\n for (const tag of jsdoc.tags) {\n if (tag.type.slice(-1) === '=') {\n report('Syntax should not be Google Closure Compiler style.', null, tag);\n break;\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode).',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-syntax',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,KAD2B;EAE3BC,MAF2B;EAG3BC;AAH2B,CAAD,KAItB;EACJ,MAAM;IACJC;EADI,IAEFD,QAFJ,CADI,CAKJ;;EACA,IAAIC,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,YAAjC,EAA+C;IAC7C,KAAK,MAAMC,GAAX,IAAkBJ,KAAK,CAACK,IAAxB,EAA8B;MAC5B,IAAID,GAAG,CAACE,IAAJ,CAASC,KAAT,CAAe,CAAC,CAAhB,MAAuB,GAA3B,EAAgC;QAC9BN,MAAM,CAAC,qDAAD,EAAwD,IAAxD,EAA8DG,GAA9D,CAAN;QACA;MACD;IACF;EACF;AACF,CAlBc,EAkBZ;EACDI,gBAAgB,EAAE,IADjB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,oGADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJN,IAAI,EAAE;EALF;AAFL,CAlBY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkTagNames.js"],"names":["jsxTagNames","Set","sourceCode","jsdoc","report","utils","context","settings","jsdocNode","definedTags","jsxTags","options","definedPreferredTags","tagNamePreference","structuredTags","definedStructuredTags","Object","keys","definedNonPreferredTags","length","values","map","preferredTag","undefined","reportSettings","replacement","filter","preferredType","jsdocTag","tags","tagName","tag","has","isValidTag","preferredTagName","getPreferredTagName","allowObjectReturn","defaultMessage","message","fixer","getText","replace","RegExp","replaceText","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport iterateJsdoc from '../iterateJsdoc';\n\n// https://babeljs.io/docs/en/babel-plugin-transform-react-jsx/\nconst jsxTagNames = new Set([\n 'jsx',\n 'jsxFrag',\n 'jsxImportSource',\n 'jsxRuntime',\n]);\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdoc,\n report,\n utils,\n context,\n settings,\n jsdocNode,\n}) => {\n const {\n definedTags = [],\n jsxTags,\n } = context.options[0] || {};\n\n let definedPreferredTags = [];\n const {\n tagNamePreference,\n structuredTags,\n } = settings;\n const definedStructuredTags = Object.keys(structuredTags);\n const definedNonPreferredTags = Object.keys(tagNamePreference);\n if (definedNonPreferredTags.length) {\n definedPreferredTags = Object.values(tagNamePreference).map((preferredTag) => {\n if (typeof preferredTag === 'string') {\n // May become an empty string but will be filtered out below\n return preferredTag;\n }\n\n if (!preferredTag) {\n return undefined;\n }\n\n if (typeof preferredTag !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.tagNamePreference`. Values must be falsy, a string, or an object.',\n );\n }\n\n return preferredTag.replacement;\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n for (const jsdocTag of jsdoc.tags) {\n const tagName = jsdocTag.tag;\n if (jsxTags && jsxTagNames.has(tagName)) {\n continue;\n }\n\n if (utils.isValidTag(tagName, [\n ...definedTags, ...definedPreferredTags, ...definedNonPreferredTags,\n ...definedStructuredTags,\n ])) {\n let preferredTagName = utils.getPreferredTagName({\n allowObjectReturn: true,\n defaultMessage: `Blacklisted tag found (\\`@${tagName}\\`)`,\n tagName,\n });\n if (!preferredTagName) {\n continue;\n }\n\n let message;\n if (typeof preferredTagName === 'object') {\n ({\n message,\n replacement: preferredTagName,\n } = preferredTagName);\n }\n\n if (!message) {\n message = `Invalid JSDoc tag (preference). Replace \"${tagName}\" JSDoc tag with \"${preferredTagName}\".`;\n }\n\n if (preferredTagName !== tagName) {\n report(message, (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).replace(\n new RegExp(`@${escapeStringRegexp(tagName)}\\\\b`, 'u'),\n `@${preferredTagName}`,\n );\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else {\n report(`Invalid JSDoc tag name \"${tagName}\".`, null, jsdocTag);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid block tag names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-tag-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n jsxTags: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTagNames.js"}
1
+ {"version":3,"file":"checkTagNames.js","names":["jsxTagNames","Set","iterateJsdoc","sourceCode","jsdoc","report","utils","context","settings","jsdocNode","definedTags","jsxTags","options","definedPreferredTags","tagNamePreference","structuredTags","definedStructuredTags","Object","keys","definedNonPreferredTags","length","values","map","preferredTag","undefined","reportSettings","replacement","filter","preferredType","jsdocTag","tags","tagName","tag","has","isValidTag","preferredTagName","getPreferredTagName","allowObjectReturn","defaultMessage","message","fixer","getText","replace","RegExp","escapeStringRegexp","replaceText","iterateAllJsdocs","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","type"],"sources":["../../src/rules/checkTagNames.js"],"sourcesContent":["import escapeStringRegexp from 'escape-string-regexp';\nimport iterateJsdoc from '../iterateJsdoc';\n\n// https://babeljs.io/docs/en/babel-plugin-transform-react-jsx/\nconst jsxTagNames = new Set([\n 'jsx',\n 'jsxFrag',\n 'jsxImportSource',\n 'jsxRuntime',\n]);\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdoc,\n report,\n utils,\n context,\n settings,\n jsdocNode,\n}) => {\n const {\n definedTags = [],\n jsxTags,\n } = context.options[0] || {};\n\n let definedPreferredTags = [];\n const {\n tagNamePreference,\n structuredTags,\n } = settings;\n const definedStructuredTags = Object.keys(structuredTags);\n const definedNonPreferredTags = Object.keys(tagNamePreference);\n if (definedNonPreferredTags.length) {\n definedPreferredTags = Object.values(tagNamePreference).map((preferredTag) => {\n if (typeof preferredTag === 'string') {\n // May become an empty string but will be filtered out below\n return preferredTag;\n }\n\n if (!preferredTag) {\n return undefined;\n }\n\n if (typeof preferredTag !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.tagNamePreference`. Values must be falsy, a string, or an object.',\n );\n }\n\n return preferredTag.replacement;\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n for (const jsdocTag of jsdoc.tags) {\n const tagName = jsdocTag.tag;\n if (jsxTags && jsxTagNames.has(tagName)) {\n continue;\n }\n\n if (utils.isValidTag(tagName, [\n ...definedTags, ...definedPreferredTags, ...definedNonPreferredTags,\n ...definedStructuredTags,\n ])) {\n let preferredTagName = utils.getPreferredTagName({\n allowObjectReturn: true,\n defaultMessage: `Blacklisted tag found (\\`@${tagName}\\`)`,\n tagName,\n });\n if (!preferredTagName) {\n continue;\n }\n\n let message;\n if (typeof preferredTagName === 'object') {\n ({\n message,\n replacement: preferredTagName,\n } = preferredTagName);\n }\n\n if (!message) {\n message = `Invalid JSDoc tag (preference). Replace \"${tagName}\" JSDoc tag with \"${preferredTagName}\".`;\n }\n\n if (preferredTagName !== tagName) {\n report(message, (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).replace(\n new RegExp(`@${escapeStringRegexp(tagName)}\\\\b`, 'u'),\n `@${preferredTagName}`,\n );\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else {\n report(`Invalid JSDoc tag name \"${tagName}\".`, null, jsdocTag);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid block tag names.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-tag-names',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n jsxTags: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkTypes.js"],"names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","elements","left","toLowerCase","push","getInvalidTypes","tagName","types","preferredSetting","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","fixedType","fix","fixer","replaceText","getText","badType","preferredType","tagValue","name","JSON","stringify","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"mappings":"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","sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n *\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\n parentNode?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (typeof preferredSetting === 'object') {\n preferred = preferredSetting?.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting?.message,\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const jsdocTag of jsdocTagsWithPossibleType) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const tagName = jsdocTag.tag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n message,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTypes.js"}
1
+ {"version":3,"file":"checkTypes.js","names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","iterateJsdoc","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","elements","left","toLowerCase","push","getInvalidTypes","tagName","types","preferredSetting","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","tagValue","name","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n *\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\n parentNode?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (typeof preferredSetting === 'object') {\n preferred = preferredSetting?.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting?.message,\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const jsdocTag of jsdocTagsWithPossibleType) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const tagName = jsdocTag.tag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n message,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -69,20 +69,33 @@ var _default = (0, _iterateJsdoc.default)(({
69
69
  });
70
70
  utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {
71
71
  const licenseRegex = utils.getRegexFromString(licensePattern, 'g');
72
- const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);
73
- const license = match && match[1] || match[0];
72
+ const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);
73
+ let positiveMatch = false;
74
74
 
75
- if (!license.trim()) {
76
- report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
77
- } else if (allowedLicenses) {
78
- if (allowedLicenses !== true && !allowedLicenses.includes(license)) {
79
- report(`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`, null, jsdocParameter);
75
+ for (const match of matches) {
76
+ const license = match[1] || match[0];
77
+
78
+ if (license) {
79
+ positiveMatch = true;
80
80
  }
81
- } else {
82
- try {
83
- (0, _spdxExpressionParse.default)(license);
84
- } catch {
85
- report(`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`, null, jsdocParameter);
81
+
82
+ if (!license.trim()) {
83
+ // Avoid reporting again as empty match
84
+ if (positiveMatch) {
85
+ return;
86
+ }
87
+
88
+ report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
89
+ } else if (allowedLicenses) {
90
+ if (allowedLicenses !== true && !allowedLicenses.includes(license)) {
91
+ report(`Invalid JSDoc @${targetTagName}: "${license}"; expected one of ${allowedLicenses.join(', ')}.`, null, jsdocParameter);
92
+ }
93
+ } else {
94
+ try {
95
+ (0, _spdxExpressionParse.default)(license);
96
+ } catch {
97
+ report(`Invalid JSDoc @${targetTagName}: "${license}"; expected SPDX expression: https://spdx.org/licenses/.`, null, jsdocParameter);
98
+ }
86
99
  }
87
100
  }
88
101
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/checkValues.js"],"names":["allowedKinds","Set","utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","match","license","includes","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"mappings":"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","sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = utils.getTagDescription(jsdocParameter).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);\n const license = match && match[1] || match[0];\n if (!license.trim()) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkValues.js"}
1
+ {"version":3,"file":"checkValues.js","names":["allowedKinds","Set","iterateJsdoc","utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","matches","matchAll","positiveMatch","match","license","includes","spdxExpressionParse","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"sources":["../../src/rules/checkValues.js"],"sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = utils.getTagDescription(jsdocParameter).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEA,MAAMA,YAAY,GAAG,IAAIC,GAAJ,CAAQ,CAC3B,OAD2B,EAE3B,UAF2B,EAG3B,OAH2B,EAI3B,UAJ2B,EAK3B,MAL2B,EAM3B,UAN2B,EAO3B,QAP2B,EAQ3B,OAR2B,EAS3B,QAT2B,EAU3B,WAV2B,EAW3B,SAX2B,CAAR,CAArB;;eAce,IAAAC,qBAAA,EAAa,CAAC;EAC3BC,KAD2B;EAE3BC,MAF2B;EAG3BC;AAH2B,CAAD,KAItB;EACJ,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAR,CAAgB,CAAhB,KAAsB,EAAtC;EACA,MAAM;IACJC,eAAe,GAAG,IADd;IAEJC,cAAc,GAAG,IAFb;IAGJC,oBAAoB,GAAG,KAHnB;IAIJC,cAAc,GAAG;EAJb,IAKFJ,OALJ;EAOAH,KAAK,CAACQ,mBAAN,CAA0B,SAA1B,EAAqC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;IACtE,MAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAhB;;IACA,IAAI,CAACF,OAAL,EAAc;MACZV,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;IAKD,CAND,MAMO,IAAI,CAACK,eAAA,CAAOC,KAAP,CAAaJ,OAAb,CAAL,EAA4B;MACjCV,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;IAKD;EACF,CAfD;EAiBAT,KAAK,CAACQ,mBAAN,CAA0B,MAA1B,EAAkC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;IACnE,MAAMM,IAAI,GAAGhB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAb;;IACA,IAAI,CAACG,IAAL,EAAW;MACTf,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;IAKD,CAND,MAMO,IAAI,CAACZ,YAAY,CAACoB,GAAb,CAAiBD,IAAjB,CAAL,EAA6B;MAClCf,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,KAA7E,GACC,mBAAkB,CACjB,GAAGZ,YADc,EAEjBqB,IAFiB,CAEZ,IAFY,CAEN,GAJT,EAKJ,IALI,EAMJT,cANI,CAAN;IAQD;EACF,CAlBD;;EAoBA,IAAIH,oBAAJ,EAA0B;IACxBN,KAAK,CAACQ,mBAAN,CAA0B,WAA1B,EAAuC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;MACxE,MAAMS,SAAS,GAAGnB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAlB;;MACA,IAAI,CAACM,SAAL,EAAgB;QACdlB,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;MAKD,CAND,MAMO,IACL,CAACW,MAAM,CAACC,SAAP,CAAiBD,MAAM,CAACD,SAAD,CAAvB,CAAD,IACAC,MAAM,CAACD,SAAD,CAAN,IAAqB,CAFhB,EAGL;QACAlB,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;MAKD;IACF,CAlBD;EAmBD;;EAEDT,KAAK,CAACQ,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;IACpE,MAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAhB;;IACA,IAAI,CAACF,OAAL,EAAc;MACZV,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;IAKD,CAND,MAMO,IAAI,CAACK,eAAA,CAAOC,KAAP,CAAaJ,OAAb,CAAL,EAA4B;MACjCV,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,IADzE,EAEJ,IAFI,EAGJA,cAHI,CAAN;IAKD;EACF,CAfD;EAgBAT,KAAK,CAACQ,mBAAN,CAA0B,SAA1B,EAAqC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;IACtE,MAAMY,YAAY,GAAGtB,KAAK,CAACuB,kBAAN,CAAyBhB,cAAzB,EAAyC,GAAzC,CAArB;IACA,MAAMiB,OAAO,GAAGxB,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCgB,QAAxC,CAAiDH,YAAjD,CAAhB;IACA,IAAII,aAAa,GAAG,KAApB;;IACA,KAAK,MAAMC,KAAX,IAAoBH,OAApB,EAA6B;MAC3B,MAAMI,OAAO,GAAGD,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAjC;;MACA,IAAIC,OAAJ,EAAa;QACXF,aAAa,GAAG,IAAhB;MACD;;MAED,IAAI,CAACE,OAAO,CAACf,IAAR,EAAL,EAAqB;QACnB;QACA,IAAIa,aAAJ,EAAmB;UACjB;QACD;;QAEDzB,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;MAKD,CAXD,MAWO,IAAIL,eAAJ,EAAqB;QAC1B,IAAIA,eAAe,KAAK,IAApB,IAA4B,CAACA,eAAe,CAACyB,QAAhB,CAAyBD,OAAzB,CAAjC,EAAoE;UAClE3B,MAAM,CACH,kBAAiBS,aAAc,MAAKkB,OAAQ,sBAAqBxB,eAAe,CAACc,IAAhB,CAAqB,IAArB,CAA2B,GADzF,EAEJ,IAFI,EAGJT,cAHI,CAAN;QAKD;MACF,CARM,MAQA;QACL,IAAI;UACF,IAAAqB,4BAAA,EAAoBF,OAApB;QACD,CAFD,CAEE,MAAM;UACN3B,MAAM,CACH,kBAAiBS,aAAc,MAAKkB,OAAQ,0DADzC,EAEJ,IAFI,EAGJnB,cAHI,CAAN;QAKD;MACF;IACF;EACF,CAzCD;EA2CAT,KAAK,CAACQ,mBAAN,CAA0B,QAA1B,EAAoC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;IACrE,MAAMqB,MAAM,GAAG/B,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,EAAwCI,IAAxC,EAAf;;IACA,IAAI,CAACkB,MAAL,EAAa;MACX9B,MAAM,CACH,kBAAiBS,aAAc,SAD5B,EAEJ,IAFI,EAGJD,cAHI,CAAN;IAKD,CAND,MAMO,IAAIJ,cAAc,IAAI,CAACA,cAAc,CAACwB,QAAf,CAAwBE,MAAxB,CAAvB,EAAwD;MAC7D9B,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAN,CAAwBH,cAAxB,CAAwC,sBAAqBJ,cAAc,CAACa,IAAf,CAAoB,IAApB,CAA0B,GADxH,EAEJ,IAFI,EAGJT,cAHI,CAAN;IAKD;EACF,CAfD;AAgBD,CAnJc,EAmJZ;EACDuB,gBAAgB,EAAE,IADjB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,oGADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVlC,cAAc,EAAE;UACdmC,KAAK,EAAE;YACLC,IAAI,EAAE;UADD,CADO;UAIdA,IAAI,EAAE;QAJQ,CADN;QAOVrC,eAAe,EAAE;UACfsC,KAAK,EAAE,CACL;YACEF,KAAK,EAAE;cACLC,IAAI,EAAE;YADD,CADT;YAIEA,IAAI,EAAE;UAJR,CADK,EAOL;YACEA,IAAI,EAAE;UADR,CAPK;QADQ,CAPP;QAoBVlC,cAAc,EAAE;UACdkC,IAAI,EAAE;QADQ,CApBN;QAuBVnC,oBAAoB,EAAE;UACpBmC,IAAI,EAAE;QADc;MAvBZ,CAFd;MA6BEA,IAAI,EAAE;IA7BR,CADM,CALJ;IAsCJA,IAAI,EAAE;EAtCF;AAFL,CAnJY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/emptyTags.js"],"names":["defaultEmptyTags","Set","emptyIfNotClosure","emptyIfClosure","settings","jsdoc","utils","emptyTags","filterTags","tag","tagName","has","hasOptionTag","tags","some","mode","content","name","description","type","trim","fix","setTag","reportJSDoc","checkInternal","checkPrivate","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,gBAAgB,GAAG,IAAIC,GAAJ,CAAQ,CAC/B,UAD+B,EACnB,OADmB,EACV,WADU,EACG,QADH,EACa,iBADb,EAE/B,QAF+B,EAErB,OAFqB,EAEZ,UAFY,EAEA,UAFA,EAEY,UAFZ,EAI/B;AACA;AACA,YAN+B,EAQ/B;AACA,UAT+B,CAAR,CAAzB;AAYA,MAAMC,iBAAiB,GAAG,IAAID,GAAJ,CAAQ,CAChC,SADgC,EACrB,SADqB,EACV,WADU,EACG,QADH,EACa,QADb,EAGhC;AACA,YAJgC,CAAR,CAA1B;AAOA,MAAME,cAAc,GAAG,IAAIF,GAAJ,CAAQ,CAC7B,WAD6B,CAAR,CAAvB;;eAIe,2BAAa,CAAC;AAC3BG,EAAAA,QAD2B;AAE3BC,EAAAA,KAF2B;AAG3BC,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAMC,SAAS,GAAGD,KAAK,CAACE,UAAN,CAAiB,CAAC;AAClCC,IAAAA,GAAG,EAAEC;AAD6B,GAAD,KAE7B;AACJ,WAAOV,gBAAgB,CAACW,GAAjB,CAAqBD,OAArB,KACLJ,KAAK,CAACM,YAAN,CAAmBF,OAAnB,KAA+BL,KAAK,CAACQ,IAAN,CAAWC,IAAX,CAAgB,CAAC;AAC9CL,MAAAA;AAD8C,KAAD,KAEzC;AACJ,aAAOA,GAAG,KAAKC,OAAf;AACD,KAJ8B,CAD1B,IAMLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+BZ,cAAc,CAACQ,GAAf,CAAmBD,OAAnB,CAN1B,IAOLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+Bb,iBAAiB,CAACS,GAAlB,CAAsBD,OAAtB,CAPjC;AAQD,GAXiB,CAAlB;;AAYA,OAAK,MAAMD,GAAX,IAAkBF,SAAlB,EAA6B;AAC3B,UAAMS,OAAO,GAAGP,GAAG,CAACQ,IAAJ,IAAYR,GAAG,CAACS,WAAhB,IAA+BT,GAAG,CAACU,IAAnD;;AACA,QAAIH,OAAO,CAACI,IAAR,EAAJ,EAAoB;AAClB,YAAMC,GAAG,GAAG,MAAM;AAChBf,QAAAA,KAAK,CAACgB,MAAN,CAAab,GAAb;AACD,OAFD;;AAIAH,MAAAA,KAAK,CAACiB,WAAN,CAAmB,IAAGd,GAAG,CAACA,GAAI,mBAA9B,EAAkDA,GAAlD,EAAuDY,GAAvD,EAA4D,IAA5D;AACD;AACF;AACF,CA3Bc,EA2BZ;AACDG,EAAAA,aAAa,EAAE,IADd;AAEDC,EAAAA,YAAY,EAAE,IAFb;AAGDC,EAAAA,gBAAgB,EAAE,IAHjB;AAIDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJV,MAAAA,WAAW,EAAE,mDADT;AAEJW,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVpB,QAAAA,IAAI,EAAE;AACJqB,UAAAA,KAAK,EAAE;AACLf,YAAAA,IAAI,EAAE;AADD,WADH;AAIJA,UAAAA,IAAI,EAAE;AAJF;AADI,OAFd;AAUEA,MAAAA,IAAI,EAAE;AAVR,KADM,CANJ;AAoBJA,IAAAA,IAAI,EAAE;AApBF;AAJL,CA3BY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultEmptyTags = new Set([\n 'abstract', 'async', 'generator', 'global', 'hideconstructor',\n 'ignore', 'inner', 'instance', 'override', 'readonly',\n\n // jsdoc doesn't use this form in its docs, but allow for compatibility with\n // TypeScript which allows and Closure which requires\n 'inheritDoc',\n\n // jsdoc doesn't use but allow for TypeScript\n 'internal',\n]);\n\nconst emptyIfNotClosure = new Set([\n 'package', 'private', 'protected', 'public', 'static',\n\n // Closure doesn't allow with this casing\n 'inheritdoc',\n]);\n\nconst emptyIfClosure = new Set([\n 'interface',\n]);\n\nexport default iterateJsdoc(({\n settings,\n jsdoc,\n utils,\n}) => {\n const emptyTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return defaultEmptyTags.has(tagName) ||\n utils.hasOptionTag(tagName) && jsdoc.tags.some(({\n tag,\n }) => {\n return tag === tagName;\n }) ||\n settings.mode === 'closure' && emptyIfClosure.has(tagName) ||\n settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);\n });\n for (const tag of emptyTags) {\n const content = tag.name || tag.description || tag.type;\n if (content.trim()) {\n const fix = () => {\n utils.setTag(tag);\n };\n\n utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);\n }\n }\n}, {\n checkInternal: true,\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Expects specific tags to be empty of any content.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-empty-tags',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"emptyTags.js"}
1
+ {"version":3,"file":"emptyTags.js","names":["defaultEmptyTags","Set","emptyIfNotClosure","emptyIfClosure","iterateJsdoc","settings","jsdoc","utils","emptyTags","filterTags","tag","tagName","has","hasOptionTag","tags","some","mode","content","name","description","type","trim","fix","setTag","reportJSDoc","checkInternal","checkPrivate","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items"],"sources":["../../src/rules/emptyTags.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultEmptyTags = new Set([\n 'abstract', 'async', 'generator', 'global', 'hideconstructor',\n 'ignore', 'inner', 'instance', 'override', 'readonly',\n\n // jsdoc doesn't use this form in its docs, but allow for compatibility with\n // TypeScript which allows and Closure which requires\n 'inheritDoc',\n\n // jsdoc doesn't use but allow for TypeScript\n 'internal',\n]);\n\nconst emptyIfNotClosure = new Set([\n 'package', 'private', 'protected', 'public', 'static',\n\n // Closure doesn't allow with this casing\n 'inheritdoc',\n]);\n\nconst emptyIfClosure = new Set([\n 'interface',\n]);\n\nexport default iterateJsdoc(({\n settings,\n jsdoc,\n utils,\n}) => {\n const emptyTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return defaultEmptyTags.has(tagName) ||\n utils.hasOptionTag(tagName) && jsdoc.tags.some(({\n tag,\n }) => {\n return tag === tagName;\n }) ||\n settings.mode === 'closure' && emptyIfClosure.has(tagName) ||\n settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);\n });\n for (const tag of emptyTags) {\n const content = tag.name || tag.description || tag.type;\n if (content.trim()) {\n const fix = () => {\n utils.setTag(tag);\n };\n\n utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);\n }\n }\n}, {\n checkInternal: true,\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Expects specific tags to be empty of any content.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-empty-tags',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,gBAAgB,GAAG,IAAIC,GAAJ,CAAQ,CAC/B,UAD+B,EACnB,OADmB,EACV,WADU,EACG,QADH,EACa,iBADb,EAE/B,QAF+B,EAErB,OAFqB,EAEZ,UAFY,EAEA,UAFA,EAEY,UAFZ,EAI/B;AACA;AACA,YAN+B,EAQ/B;AACA,UAT+B,CAAR,CAAzB;AAYA,MAAMC,iBAAiB,GAAG,IAAID,GAAJ,CAAQ,CAChC,SADgC,EACrB,SADqB,EACV,WADU,EACG,QADH,EACa,QADb,EAGhC;AACA,YAJgC,CAAR,CAA1B;AAOA,MAAME,cAAc,GAAG,IAAIF,GAAJ,CAAQ,CAC7B,WAD6B,CAAR,CAAvB;;eAIe,IAAAG,qBAAA,EAAa,CAAC;EAC3BC,QAD2B;EAE3BC,KAF2B;EAG3BC;AAH2B,CAAD,KAItB;EACJ,MAAMC,SAAS,GAAGD,KAAK,CAACE,UAAN,CAAiB,CAAC;IAClCC,GAAG,EAAEC;EAD6B,CAAD,KAE7B;IACJ,OAAOX,gBAAgB,CAACY,GAAjB,CAAqBD,OAArB,KACLJ,KAAK,CAACM,YAAN,CAAmBF,OAAnB,KAA+BL,KAAK,CAACQ,IAAN,CAAWC,IAAX,CAAgB,CAAC;MAC9CL;IAD8C,CAAD,KAEzC;MACJ,OAAOA,GAAG,KAAKC,OAAf;IACD,CAJ8B,CAD1B,IAMLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+Bb,cAAc,CAACS,GAAf,CAAmBD,OAAnB,CAN1B,IAOLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+Bd,iBAAiB,CAACU,GAAlB,CAAsBD,OAAtB,CAPjC;EAQD,CAXiB,CAAlB;;EAYA,KAAK,MAAMD,GAAX,IAAkBF,SAAlB,EAA6B;IAC3B,MAAMS,OAAO,GAAGP,GAAG,CAACQ,IAAJ,IAAYR,GAAG,CAACS,WAAhB,IAA+BT,GAAG,CAACU,IAAnD;;IACA,IAAIH,OAAO,CAACI,IAAR,EAAJ,EAAoB;MAClB,MAAMC,GAAG,GAAG,MAAM;QAChBf,KAAK,CAACgB,MAAN,CAAab,GAAb;MACD,CAFD;;MAIAH,KAAK,CAACiB,WAAN,CAAmB,IAAGd,GAAG,CAACA,GAAI,mBAA9B,EAAkDA,GAAlD,EAAuDY,GAAvD,EAA4D,IAA5D;IACD;EACF;AACF,CA3Bc,EA2BZ;EACDG,aAAa,EAAE,IADd;EAEDC,YAAY,EAAE,IAFb;EAGDC,gBAAgB,EAAE,IAHjB;EAIDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,mDADT;MAEJW,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVpB,IAAI,EAAE;UACJqB,KAAK,EAAE;YACLf,IAAI,EAAE;UADD,CADH;UAIJA,IAAI,EAAE;QAJF;MADI,CAFd;MAUEA,IAAI,EAAE;IAVR,CADM,CANJ;IAoBJA,IAAI,EAAE;EApBF;AAJL,CA3BY,C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/implementsOnClasses.js"],"names":["report","utils","iteratingFunction","isIteratingFunction","hasATag","isConstructor","isVirtualFunction","forEachPreferredTag","tag","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJ,QAAMC,iBAAiB,GAAGD,KAAK,CAACE,mBAAN,EAA1B;;AAEA,MAAID,iBAAJ,EAAuB;AACrB,QAAID,KAAK,CAACG,OAAN,CAAc,CAChB,OADgB,EAEhB,aAFgB,CAAd,KAIFH,KAAK,CAACI,aAAN,EAJF,EAKE;AACA;AACD;AACF,GATD,MASO,IAAI,CAACJ,KAAK,CAACK,iBAAN,EAAL,EAAgC;AACrC;AACD;;AAEDL,EAAAA,KAAK,CAACM,mBAAN,CAA0B,YAA1B,EAAyCC,GAAD,IAAS;AAC/CR,IAAAA,MAAM,CAAC,gDAAD,EAAmD,IAAnD,EAAyDQ,GAAzD,CAAN;AACD,GAFD;AAGD,CAtBc,EAsBZ;AACDC,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,yEADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEL,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVK,gBAAAA,OAAO,EAAE;AACPD,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVE,gBAAAA,OAAO,EAAE;AACPF,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE;AADA,OAFd;AA0BEA,MAAAA,IAAI,EAAE;AA1BR,KADM,CALJ;AAmCJA,IAAAA,IAAI,EAAE;AAnCF;AAFL,CAtBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n const iteratingFunction = utils.isIteratingFunction();\n\n if (iteratingFunction) {\n if (utils.hasATag([\n 'class',\n 'constructor',\n ]) ||\n utils.isConstructor()\n ) {\n return;\n }\n } else if (!utils.isVirtualFunction()) {\n return;\n }\n\n utils.forEachPreferredTag('implements', (tag) => {\n report('@implements used on a non-constructor function', null, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Reports an issue with any non-constructor function using `@implements`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-implements-on-classes',\n },\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"],"file":"implementsOnClasses.js"}
1
+ {"version":3,"file":"implementsOnClasses.js","names":["iterateJsdoc","report","utils","iteratingFunction","isIteratingFunction","hasATag","isConstructor","isVirtualFunction","forEachPreferredTag","tag","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context"],"sources":["../../src/rules/implementsOnClasses.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n const iteratingFunction = utils.isIteratingFunction();\n\n if (iteratingFunction) {\n if (utils.hasATag([\n 'class',\n 'constructor',\n ]) ||\n utils.isConstructor()\n ) {\n return;\n }\n } else if (!utils.isVirtualFunction()) {\n return;\n }\n\n utils.forEachPreferredTag('implements', (tag) => {\n report('@implements used on a non-constructor function', null, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Reports an issue with any non-constructor function using `@implements`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-implements-on-classes',\n },\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;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,MAD2B;EAE3BC;AAF2B,CAAD,KAGtB;EACJ,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,mBAAN,EAA1B;;EAEA,IAAID,iBAAJ,EAAuB;IACrB,IAAID,KAAK,CAACG,OAAN,CAAc,CAChB,OADgB,EAEhB,aAFgB,CAAd,KAIFH,KAAK,CAACI,aAAN,EAJF,EAKE;MACA;IACD;EACF,CATD,MASO,IAAI,CAACJ,KAAK,CAACK,iBAAN,EAAL,EAAgC;IACrC;EACD;;EAEDL,KAAK,CAACM,mBAAN,CAA0B,YAA1B,EAAyCC,GAAD,IAAS;IAC/CR,MAAM,CAAC,gDAAD,EAAmD,IAAnD,EAAyDQ,GAAzD,CAAN;EACD,CAFD;AAGD,CAtBc,EAsBZ;EACDC,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yEADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YADR,CADK,EAIL;cACEL,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBADC,CADC;gBAIVE,OAAO,EAAE;kBACPF,IAAI,EAAE;gBADC;cAJC,CAFd;cAUEA,IAAI,EAAE;YAVR,CAJK;UADF,CADC;UAoBRA,IAAI,EAAE;QApBE;MADA,CAFd;MA0BEA,IAAI,EAAE;IA1BR,CADM,CALJ;IAmCJA,IAAI,EAAE;EAnCF;AAFL,CAtBY,C"}