eslint-plugin-jsdoc 37.2.8 → 37.4.2

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 (56) hide show
  1. package/README.md +99 -7
  2. package/dist/alignTransform.js.map +1 -1
  3. package/dist/bin/generateRule.js.map +1 -1
  4. package/dist/exportParser.js.map +1 -1
  5. package/dist/generateRule.js.map +1 -1
  6. package/dist/getDefaultTagStructureForMode.js +1 -1
  7. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/iterateJsdoc.js.map +1 -1
  10. package/dist/jsdocUtils.js.map +1 -1
  11. package/dist/rules/checkAccess.js.map +1 -1
  12. package/dist/rules/checkExamples.js +2 -2
  13. package/dist/rules/checkExamples.js.map +1 -1
  14. package/dist/rules/checkIndentation.js.map +1 -1
  15. package/dist/rules/checkLineAlignment.js.map +1 -1
  16. package/dist/rules/checkParamNames.js.map +1 -1
  17. package/dist/rules/checkPropertyNames.js.map +1 -1
  18. package/dist/rules/checkSyntax.js.map +1 -1
  19. package/dist/rules/checkTagNames.js.map +1 -1
  20. package/dist/rules/checkTypes.js.map +1 -1
  21. package/dist/rules/emptyTags.js.map +1 -1
  22. package/dist/rules/matchDescription.js +1 -1
  23. package/dist/rules/matchDescription.js.map +1 -1
  24. package/dist/rules/matchName.js.map +1 -1
  25. package/dist/rules/multilineBlocks.js.map +1 -1
  26. package/dist/rules/newlineAfterDescription.js.map +1 -1
  27. package/dist/rules/noBadBlocks.js.map +1 -1
  28. package/dist/rules/noDefaults.js.map +1 -1
  29. package/dist/rules/noMissingSyntax.js.map +1 -1
  30. package/dist/rules/noMultiAsterisks.js.map +1 -1
  31. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  32. package/dist/rules/noTypes.js.map +1 -1
  33. package/dist/rules/noUndefinedTypes.js.map +1 -1
  34. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  35. package/dist/rules/requireDescription.js.map +1 -1
  36. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  37. package/dist/rules/requireExample.js.map +1 -1
  38. package/dist/rules/requireFileOverview.js.map +1 -1
  39. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  40. package/dist/rules/requireJsdoc.js.map +1 -1
  41. package/dist/rules/requireParam.js.map +1 -1
  42. package/dist/rules/requireProperty.js.map +1 -1
  43. package/dist/rules/requireReturns.js.map +1 -1
  44. package/dist/rules/requireReturnsCheck.js +9 -2
  45. package/dist/rules/requireReturnsCheck.js.map +1 -1
  46. package/dist/rules/requireReturnsDescription.js.map +1 -1
  47. package/dist/rules/requireThrows.js +4 -0
  48. package/dist/rules/requireThrows.js.map +1 -1
  49. package/dist/rules/requireYields.js.map +1 -1
  50. package/dist/rules/requireYieldsCheck.js +8 -0
  51. package/dist/rules/requireYieldsCheck.js.map +1 -1
  52. package/dist/rules/tagLines.js.map +1 -1
  53. package/dist/rules/validTypes.js +25 -0
  54. package/dist/rules/validTypes.js.map +1 -1
  55. package/dist/tagNames.js.map +1 -1
  56. package/package.json +14 -13
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/getDefaultTagStructureForMode.js"],"names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map"],"mappings":"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","sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n ['alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['arg', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['argument', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `param`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n ])],\n\n ['class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n ['constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n ['typeAllowed', true],\n ])],\n\n ['define', new Map([\n ['typeRequired', isClosure],\n ])],\n\n ['emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['enum', new Map([\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n ['nameRequired', true],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['exception', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['export', new Map([\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // Does not show curly brackets in either the signature or examples\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n\n ['nameRequired', isJsdoc],\n\n // \"namepath\"\n ['typeOrNameRequired', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // \"name\" (and a special syntax for the `external` name)\n ['nameRequired', true],\n ])],\n\n ['fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n ['nameContents', 'namepath-defining'],\n\n // See `external`\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n ])],\n\n ['implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n ['typeRequired', true],\n ])],\n\n ['lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n ])],\n\n ['member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n ['memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n ['nameContents', 'namepath-referencing'],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n ['mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n ['nameContents', 'namepath-referencing'],\n\n // \"OtherObjectPath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n ])],\n\n ['modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n ['typeAllowed', true],\n ])],\n\n ['module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n ['nameContents', isJsdoc ? 'namepath-defining' : 'text'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n\n ['name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Shows the signature with curly brackets but not in the example\n ['typeAllowed', true],\n ])],\n ['package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['param', new Map([\n ['nameContents', 'namepath-defining'],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['prop', new Map([\n ['nameContents', 'namepath-defining'],\n\n // See `property`\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['property', new Map([\n ['nameContents', 'namepath-defining'],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n ['nameRequired', true],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n ['typeAllowed', true],\n ])],\n\n ['protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['public', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['returns', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['return', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n ['nameContents', 'text'],\n ])],\n\n ['static', new Map([\n // Does not show a signature nor show curly brackets in the example\n ['typeAllowed', isClosureOrPermissive],\n ])],\n\n ['template', new Map([\n ['nameContents', isJsdoc ? 'text' : 'namepath-referencing'],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n ['typeAllowed', isTypescriptOrClosure || isPermissive],\n ])],\n\n ['this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n ['nameContents', isJsdoc ? 'namepath-referencing' : false],\n\n ['typeRequired', isTypescriptOrClosure],\n\n // namepath\n ['typeOrNameRequired', isJsdoc],\n ])],\n\n ['throws', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n\n ['type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n ['typeRequired', true],\n ])],\n\n ['typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n ['nameContents', 'namepath-defining'],\n\n // \"namepath\"\n ['nameRequired', isJsdocTypescriptOrPermissive],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n\n // \"namepath\"\n ['typeOrNameRequired', true],\n ])],\n\n ['var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n ['nameContents', 'namepath-defining'],\n\n // Has example showing curly brackets but not in doc signature\n ['typeAllowed', true],\n ])],\n\n ['yields', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ['yield', new Map([\n // Shows curly brackets in the signature and in the examples\n ['typeAllowed', true],\n ])],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"file":"getDefaultTagStructureForMode.js"}
1
+ {"version":3,"sources":["../src/getDefaultTagStructureForMode.js"],"names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map"],"mappings":";;;;;;;AAAA,MAAMA,6BAA6B,GAAIC,IAAD,IAAU;AAC9C,QAAMC,OAAO,GAAGD,IAAI,KAAK,OAAzB;AACA,QAAME,SAAS,GAAGF,IAAI,KAAK,SAA3B;AACA,QAAMG,YAAY,GAAGH,IAAI,KAAK,YAA9B;AACA,QAAMI,YAAY,GAAGJ,IAAI,KAAK,YAA9B;AAEA,QAAMK,mBAAmB,GAAGJ,OAAO,IAAIE,YAAvC;AACA,QAAMG,qBAAqB,GAAGH,YAAY,IAAID,SAA9C;AACA,QAAMK,qBAAqB,GAAGL,SAAS,IAAIE,YAA3C;AACA,QAAMI,6BAA6B,GAAGH,mBAAmB,IAAID,YAA7D,CAT8C,CAW9C;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAO,IAAIK,GAAJ,CAAQ,CACb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,sBADlB,CAFe,EAMf;AACA,GACE,oBADF,EACwB,IADxB,CAPe,CAAR,CADX,CADa,EAeb,CACE,KADF,EACS,IAAIA,GAAJ,CAAQ,CACb,CACE,cADF,EACkB,mBADlB,CADa,EAKb;AACA,GACE,cADF,EACkB,IADlB,CANa,EAUb;AACA;AACA,GACE,aADF,EACiB,IADjB,CAZa,CAAR,CADT,CAfa,EAkCb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CAClB,CACE,cADF,EACkB,mBADlB,CADkB,EAKlB;AACA,GACE,cADF,EACkB,IADlB,CANkB,EAUlB;AACA;AACA,GACE,aADF,EACiB,IADjB,CAZkB,CAAR,CADd,CAlCa,EAqDb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACE,GACE,cADF,EACkB,sBADlB,CAFkB,EAMlB;AACA,GACE,aADF,EACiB,IADjB,CAPkB,EAWlB;AACA,GACE,oBADF,EACwB,IADxB,CAZkB,CAAR,CADd,CArDa,EAwEb,CACE,SADF,EACa,IAAIA,GAAJ,CAAQ,CACnB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHiB,EAOjB;AACA,GACE,oBADF,EACwB,IADxB,CARiB,CAAR,CADb,CAxEa,EAuFb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACA;AACE,GACE,cADF,EACkB,mBADlB,CAHkB,EAOlB;AACA,GACE,cADF,EACkB,IADlB,CARkB,CAAR,CADd,CAvFa,EAsGb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,mBADlB,CAFe,EAMf,CACE,aADF,EACiB,IADjB,CANe,CAAR,CADX,CAtGa,EAmHb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,mBADlB,CAFe,EAMf,CACE,aADF,EACiB,IADjB,CANe,CAAR,CADX,CAnHa,EA+Hb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACE,GACE,cADF,EACkB,mBADlB,CAFkB,EAMlB,CACE,aADF,EACiB,IADjB,CANkB,CAAR,CADd,CA/Ha,EA2Ib,CACE,aADF,EACiB,IAAIA,GAAJ,CAAQ,CACvB;AACE,GACE,cADF,EACkB,mBADlB,CAFqB,EAMrB,CACE,aADF,EACiB,IADjB,CANqB,CAAR,CADjB,CA3Ia,EAwJb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAChB,CACE,cADF,EACkBP,SADlB,CADgB,CAAR,CADZ,CAxJa,EAgKb,CACE,OADF,EACW,IAAIO,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,sBADlB,CAFe,CAAR,CADX,CAhKa,EAyKb,CACE,MADF,EACU,IAAIA,GAAJ,CAAQ,CAChB;AACE,GACE,aADF,EACiB,IADjB,CAFc,CAAR,CADV,CAzKa,EAkLb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,IADlB,CAFe,EAMf;AACA;AACA;AACA,GACE,cADF,EACkB,mBADlB,CATe,CAAR,CADX,CAlLa,EAkMb,CACE,WADF,EACe,IAAIA,GAAJ,CAAQ,CACrB;AACE,GACE,aADF,EACiB,IADjB,CAFmB,CAAR,CADf,CAlMa,EA2Mb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAChB,CACE,aADF,EACiBF,qBADjB,CADgB,CAAR,CADZ,CA3Ma,EAmNb,CACE,SADF,EACa,IAAIE,GAAJ,CAAQ,CACnB;AACE,GACE,cADF,EACkB,sBADlB,CAFiB,EAMjB;AACA,GACE,aADF,EACiBH,qBAAqB,IAAIF,YAD1C,CAPiB,EAWjB,CACE,cADF,EACkBH,OADlB,CAXiB,EAejB;AACA,GACE,oBADF,EACwBK,qBAAqB,IAAIF,YADjD,CAhBiB,CAAR,CADb,CAnNa,EA0Ob,CACE,UADF,EACc,IAAIK,GAAJ,CAAQ,CACpB;AACA;AACA;AACE,GACE,cADF,EACkB,mBADlB,CAJkB,EAQlB;AACA,GACE,cADF,EACkB,IADlB,CATkB,CAAR,CADd,CA1Oa,EA0Pb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHe,CAAR,CADX,CA1Pa,EAoQb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACE,GACE,cADF,EACkB,mBADlB,CAFkB,CAAR,CADd,CApQa,EA4Qb,CACE,MADF,EACU,IAAIA,GAAJ,CAAQ,CAChB;AACE,GACE,cADF,EACkB,mBADlB,CAFc,CAAR,CADV,CA5Qa,EAqRb,CACE,MADF,EACU,IAAIA,GAAJ,CAAQ,CAChB;AACA;AACA;AACE,GACE,cADF,EACkB,mBADlB,CAJc,EAQd;AACA,GACE,cADF,EACkB,IADlB,CATc,EAad;AACA,GACE,oBADF,EACwB,IADxB,CAdc,CAAR,CADV,CArRa,EA0Sb,CACE,WADF,EACe,IAAIA,GAAJ,CAAQ,CACrB;AACE,GACE,cADF,EAEED,6BAA6B,GAAG,mBAAH,GAAyB,KAFxD,CAFmB,CAAR,CADf,CA1Sa,EAoTb,CACE,YADF,EACgB,IAAIC,GAAJ,CAAQ,CACtB;AACA;AACE,GACE,cADF,EACkB,IADlB,CAHoB,CAAR,CADhB,CApTa,EA8Tb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,sBADlB,CAFe,EAMf;AACA,GACE,oBADF,EACwB,IADxB,CAPe,CAAR,CADX,CA9Ta,EA4Ub,CACE,SADF,EACa,IAAIA,GAAJ,CAAQ,CACnB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHiB,CAAR,CADb,CA5Ua,EAsVb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACE,GACE,cADF,EACkB,mBADlB,CAFgB,EAMhB;AACA,GACE,aADF,EACiB,IADjB,CAPgB,CAAR,CADZ,CAtVa,EAoWb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHkB,EAOlB;AACA,GACE,oBADF,EACwB,IADxB,CARkB,CAAR,CADd,CApWa,EAkXb,CACE,WADF,EACe,IAAIA,GAAJ,CAAQ,CACrB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHmB,EAOnB;AACA,GACE,oBADF,EACwB,IADxB,CARmB,CAAR,CADf,CAlXa,EAiYb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACE,GACE,cADF,EACkB,mBADlB,CAFgB,CAAR,CADZ,CAjYa,EAyYb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACA;AACE,GACE,cADF,EACkB,sBADlB,CAHe,EAOf;AACA,GACE,oBADF,EACwB,IADxB,CARe,CAAR,CADX,CAzYa,EAwZb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,cADF,EACkB,mBADlB,CAFe,CAAR,CADX,CAxZa,EAiab,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CACpB;AACA;AACA;AACE,GACE,aADF,EACiB,IADjB,CAJkB,CAAR,CADd,CAjaa,EA4ab,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACA;AACA;AACE,GACE,cADF,EACkBR,OAAO,GAAG,mBAAH,GAAyB,MADlD,CAJgB,EAQhB;AACA,GACE,aADF,EACiB,IADjB,CATgB,CAAR,CADZ,CA5aa,EA4bb,CACE,MADF,EACU,IAAIQ,GAAJ,CAAQ,CAChB;AACA;AACE,GACE,cADF,EACkB,mBADlB,CAHc,EAOd;AACA,GACE,cADF,EACkB,IADlB,CARc,EAYd;AACA,GACE,oBADF,EACwB,IADxB,CAbc,CAAR,CADV,CA5ba,EAgdb,CACE,WADF,EACe,IAAIA,GAAJ,CAAQ,CACrB;AACE,GACE,cADF,EACkB,mBADlB,CAFmB,EAMnB;AACA,GACE,aADF,EACiB,IADjB,CAPmB,CAAR,CADf,CAhda,EA6db,CACE,SADF,EACa,IAAIA,GAAJ,CAAQ,CACnB;AACA;AACE,GACE,aADF,EACiBF,qBADjB,CAHiB,CAAR,CADb,CA7da,EAueb,CACE,OADF,EACW,IAAIE,GAAJ,CAAQ,CACf,CACE,cADF,EACkB,mBADlB,CADe,EAKf;AACA;AACA;AACA;AACA,GACE,cADF,EACkB,IADlB,CATe,EAaf;AACA;AACA,GACE,aADF,EACiB,IADjB,CAfe,CAAR,CADX,CAvea,EA6fb,CACE,SADF,EACa,IAAIA,GAAJ,CAAQ,CACnB;AACA;AACE,GACE,aADF,EACiBF,qBADjB,CAHiB,CAAR,CADb,CA7fa,EAugBb,CACE,MADF,EACU,IAAIE,GAAJ,CAAQ,CACd,CACE,cADF,EACkB,mBADlB,CADc,EAKd;AACA,GACE,cADF,EACkB,IADlB,CANc,EAUd;AACA;AACA,GACE,aADF,EACiB,IADjB,CAZc,CAAR,CADV,CAvgBa,EA0hBb,CACE,UADF,EACc,IAAIA,GAAJ,CAAQ,CAClB,CACE,cADF,EACkB,mBADlB,CADkB,EAKlB;AACA;AACA,GACE,cADF,EACkB,IADlB,CAPkB,EAWlB;AACA;AACA,GACE,aADF,EACiB,IADjB,CAbkB,CAAR,CADd,CA1hBa,EA8iBb,CACE,WADF,EACe,IAAIA,GAAJ,CAAQ,CACrB;AACA;AACE,GACE,aADF,EACiBF,qBADjB,CAHmB,CAAR,CADf,CA9iBa,EAwjBb,CACE,QADF,EACY,IAAIE,GAAJ,CAAQ,CAClB;AACE,GACE,aADF,EACiBF,qBADjB,CAFgB,CAAR,CADZ,CAxjBa,EAikBb,CACE,SADF,EACa,IAAIE,GAAJ,CAAQ,CACnB;AACE,GACE,aADF,EACiB,IADjB,CAFiB,CAAR,CADb,CAjkBa,EAykBb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACE,GACE,aADF,EACiB,IADjB,CAFgB,CAAR,CADZ,CAzkBa,EAklBb,CACE,KADF,EACS,IAAIA,GAAJ,CAAQ,CACf;AACA;AACE,GACE,cADF,EACkB,MADlB,CAHa,CAAR,CADT,CAllBa,EA4lBb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACE,GACE,aADF,EACiBF,qBADjB,CAFgB,CAAR,CADZ,CA5lBa,EAqmBb,CACE,UADF,EACc,IAAIE,GAAJ,CAAQ,CAClB,CACE,cADF,EACkB,CAACP,SADnB,CADkB,EAIlB,CACE,cADF,EACkBA,SADlB,CAJkB,CAAR,CADd,CArmBa,EAgnBb,CACE,UADF,EACc,IAAIO,GAAJ,CAAQ,CAClB,CACE,cADF,EACkBR,OAAO,GAAG,MAAH,GAAY,sBADrC,CADkB,EAKlB;AACA;AACA;AACA,GACE,aADF,EACiBK,qBAAqB,IAAIF,YAD1C,CARkB,CAAR,CADd,CAhnBa,EA+nBb,CACE,MADF,EACU,IAAIK,GAAJ,CAAQ,CAChB;AACA;AACE,GACE,cADF,EACkBR,OAAO,GAAG,sBAAH,GAA4B,KADrD,CAHc,EAOd,CACE,cADF,EACkBK,qBADlB,CAPc,EAWd;AACA,GACE,oBADF,EACwBL,OADxB,CAZc,CAAR,CADV,CA/nBa,EAkpBb,CACE,QADF,EACY,IAAIQ,GAAJ,CAAQ,CAClB;AACE,GACE,aADF,EACiB,IADjB,CAFgB,CAAR,CADZ,CAlpBa,EA2pBb,CACE,MADF,EACU,IAAIA,GAAJ,CAAQ,CAChB;AACA;AACE,GACE,cADF,EACkB,IADlB,CAHc,CAAR,CADV,CA3pBa,EAqqBb,CACE,SADF,EACa,IAAIA,GAAJ,CAAQ,CACnB;AACA;AACE,GACE,cADF,EACkB,mBADlB,CAHiB,EAOjB;AACA,GACE,cADF,EACkBD,6BADlB,CARiB,EAYjB;AACA,GACE,aADF,EACiB,IADjB,CAbiB,EAiBjB;AACA,GACE,oBADF,EACwB,IADxB,CAlBiB,CAAR,CADb,CArqBa,EA8rBb,CACE,KADF,EACS,IAAIC,GAAJ,CAAQ,CACf;AACE,GACE,cADF,EACkB,mBADlB,CAFa,EAMb;AACA,GACE,aADF,EACiB,IADjB,CAPa,CAAR,CADT,CA9rBa,EA4sBb,CACE,QADF,EACY,IAAIA,GAAJ,CAAQ,CAClB;AACE,GACE,aADF,EACiB,IADjB,CAFgB,CAAR,CADZ,CA5sBa,EAotBb,CACE,OADF,EACW,IAAIA,GAAJ,CAAQ,CACjB;AACE,GACE,aADF,EACiB,IADjB,CAFe,CAAR,CADX,CAptBa,CAAR,CAAP;AA6tBD,CAtwBD;;eAwwBeV,6B","sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n [\n 'alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'arg', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'argument', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n ]),\n ],\n\n [\n 'class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'define', new Map([\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n ]),\n ],\n\n [\n 'enum', new Map([\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n [\n 'nameRequired', true,\n ],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'exception', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'export', new Map([\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n\n [\n 'nameRequired', isJsdoc,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"name\" (and a special syntax for the `external` name)\n [\n 'nameRequired', true,\n ],\n ]),\n ],\n\n [\n 'fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n ]),\n ],\n\n [\n 'function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n [\n 'func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `external`\n [\n 'nameRequired', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n ]),\n ],\n\n [\n 'implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n ]),\n ],\n\n [\n 'member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n [\n 'memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n [\n 'mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"OtherObjectPath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n [\n 'nameContents', isJsdoc ? 'namepath-defining' : 'text',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'param', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'prop', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `property`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'property', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'public', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'returns', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'return', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n [\n 'nameContents', 'text',\n ],\n ]),\n ],\n\n [\n 'static', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'suppress', new Map([\n [\n 'nameContents', !isClosure,\n ],\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'template', new Map([\n [\n 'nameContents', isJsdoc ? 'text' : 'namepath-referencing',\n ],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n [\n 'nameContents', isJsdoc ? 'namepath-referencing' : false,\n ],\n\n [\n 'typeRequired', isTypescriptOrClosure,\n ],\n\n // namepath\n [\n 'typeOrNameRequired', isJsdoc,\n ],\n ]),\n ],\n\n [\n 'throws', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', isJsdocTypescriptOrPermissive,\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'yields', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'yield', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"file":"getDefaultTagStructureForMode.js"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["configs","recommended","plugins","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTypes","checkValues","emptyTags","implementsOnClasses","matchDescription","matchName","multilineBlocks","newlineAfterDescription","noBadBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireThrows","requireYields","requireYieldsCheck","tagLines","validTypes"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;eAEe;AACbA,EAAAA,OAAO,EAAE;AACPC,IAAAA,WAAW,EAAE;AACXC,MAAAA,OAAO,EAAE,CAAC,OAAD,CADE;AAEXC,MAAAA,KAAK,EAAE;AACL,8BAAsB,MADjB;AAEL,iCAAyB,MAFpB;AAGL,gCAAwB,KAHnB;AAIL,mCAA2B,KAJtB;AAKL,sCAA8B,KALzB;AAML,mCAA2B,MANtB;AAOL,sCAA8B,MAPzB;AAQL,8BAAsB,KARjB;AASL,iCAAyB,MATpB;AAUL,6BAAqB,MAVhB;AAWL,8BAAsB,MAXjB;AAYL,4BAAoB,MAZf;AAaL,uCAA+B,MAb1B;AAcL,mCAA2B,KAdtB;AAeL,4BAAoB,KAff;AAgBL,kCAA0B,MAhBrB;AAiBL,2CAAmC,MAjB9B;AAkBL,+BAAuB,KAlBlB;AAmBL,6BAAqB,KAnBhB;AAoBL,mCAA2B,KApBtB;AAqBL,oCAA4B,MArBvB;AAsBL,sCAA8B,KAtBzB;AAuBL,0BAAkB,KAvBb;AAwBL,oCAA4B,MAxBvB;AAyBL,yCAAiC,KAzB5B;AA0BL,qCAA6B,KA1BxB;AA2BL,uDAA+C,KA3B1C;AA4BL,iCAAyB,KA5BpB;AA6BL,uCAA+B,KA7B1B;AA8BL,yDAAiD,KA9B5C;AA+BL,+BAAuB,MA/BlB;AAgCL,+BAAuB,MAhClB;AAiCL,2CAAmC,MAjC9B;AAkCL,oCAA4B,MAlCvB;AAmCL,oCAA4B,MAnCvB;AAoCL,kCAA0B,MApCrB;AAqCL,8CAAsC,MArCjC;AAsCL,uCAA+B,MAtC1B;AAuCL,uCAA+B,MAvC1B;AAwCL,iCAAyB,MAxCpB;AAyCL,uCAA+B,MAzC1B;AA0CL,6CAAqC,MA1ChC;AA2CL,sCAA8B,MA3CzB;AA4CL,gCAAwB,KA5CnB;AA6CL,gCAAwB,MA7CnB;AA8CL,sCAA8B,MA9CzB;AA+CL,2BAAmB,MA/Cd;AAgDL,6BAAqB;AAhDhB;AAFI;AADN,GADI;AAwDbA,EAAAA,KAAK,EAAE;AACL,oBAAgBC,oBADX;AAEL,uBAAmBC,uBAFd;AAGL,sBAAkBC,sBAHb;AAIL,yBAAqBC,yBAJhB;AAKL,4BAAwBC,2BALnB;AAML,yBAAqBC,wBANhB;AAOL,4BAAwBC,2BAPnB;AAQL,oBAAgBC,oBARX;AASL,uBAAmBC,sBATd;AAUL,mBAAeC,mBAVV;AAWL,oBAAgBC,oBAXX;AAYL,kBAAcC,kBAZT;AAaL,6BAAyBC,4BAbpB;AAcL,yBAAqBC,yBAdhB;AAeL,kBAAcC,kBAfT;AAgBL,wBAAoBC,wBAhBf;AAiBL,iCAA6BC,gCAjBxB;AAkBL,qBAAiBC,oBAlBZ;AAmBL,mBAAeC,mBAnBV;AAoBL,yBAAqBC,wBApBhB;AAqBL,0BAAsBC,yBArBjB;AAsBL,4BAAwBC,2BAtBnB;AAuBL,gBAAYC,gBAvBP;AAwBL,0BAAsBC,yBAxBjB;AAyBL,+BAA2BC,8BAzBtB;AA0BL,2BAAuBC,2BA1BlB;AA2BL,6CAAyCC,2CA3BpC;AA4BL,uBAAmBC,uBA5Bd;AA6BL,6BAAyBC,4BA7BpB;AA8BL,+CAA2CC,4CA9BtC;AA+BL,qBAAiBC,qBA/BZ;AAgCL,qBAAiBC,qBAhCZ;AAiCL,iCAA6BC,gCAjCxB;AAkCL,0BAAsBC,yBAlCjB;AAmCL,0BAAsBC,yBAnCjB;AAoCL,wBAAoBC,wBApCf;AAqCL,oCAAgCC,mCArC3B;AAsCL,6BAAyBC,4BAtCpB;AAuCL,6BAAyBC,4BAvCpB;AAwCL,uBAAmBC,uBAxCd;AAyCL,6BAAyBC,4BAzCpB;AA0CL,mCAA+BC,kCA1C1B;AA2CL,4BAAwBC,2BA3CnB;AA4CL,sBAAkBC,sBA5Cb;AA6CL,sBAAkBC,sBA7Cb;AA8CL,4BAAwBC,2BA9CnB;AA+CL,iBAAaC,iBA/CR;AAgDL,mBAAeC;AAhDV;AAxDM,C","sourcesContent":["import checkAccess from './rules/checkAccess';\nimport checkAlignment from './rules/checkAlignment';\nimport checkExamples from './rules/checkExamples';\nimport checkIndentation from './rules/checkIndentation';\nimport checkLineAlignment from './rules/checkLineAlignment';\nimport checkParamNames from './rules/checkParamNames';\nimport checkPropertyNames from './rules/checkPropertyNames';\nimport checkSyntax from './rules/checkSyntax';\nimport checkTagNames from './rules/checkTagNames';\nimport checkTypes from './rules/checkTypes';\nimport checkValues from './rules/checkValues';\nimport emptyTags from './rules/emptyTags';\nimport implementsOnClasses from './rules/implementsOnClasses';\nimport matchDescription from './rules/matchDescription';\nimport matchName from './rules/matchName';\nimport multilineBlocks from './rules/multilineBlocks';\nimport newlineAfterDescription from './rules/newlineAfterDescription';\nimport noBadBlocks from './rules/noBadBlocks';\nimport noDefaults from './rules/noDefaults';\nimport noMissingSyntax from './rules/noMissingSyntax';\nimport noMultiAsterisks from './rules/noMultiAsterisks';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax';\nimport noTypes from './rules/noTypes';\nimport noUndefinedTypes from './rules/noUndefinedTypes';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix';\nimport requireDescription from './rules/requireDescription';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence';\nimport requireExample from './rules/requireExample';\nimport requireFileOverview from './rules/requireFileOverview';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription';\nimport requireJsdoc from './rules/requireJsdoc';\nimport requireParam from './rules/requireParam';\nimport requireParamDescription from './rules/requireParamDescription';\nimport requireParamName from './rules/requireParamName';\nimport requireParamType from './rules/requireParamType';\nimport requireProperty from './rules/requireProperty';\nimport requirePropertyDescription from './rules/requirePropertyDescription';\nimport requirePropertyName from './rules/requirePropertyName';\nimport requirePropertyType from './rules/requirePropertyType';\nimport requireReturns from './rules/requireReturns';\nimport requireReturnsCheck from './rules/requireReturnsCheck';\nimport requireReturnsDescription from './rules/requireReturnsDescription';\nimport requireReturnsType from './rules/requireReturnsType';\nimport requireThrows from './rules/requireThrows';\nimport requireYields from './rules/requireYields';\nimport requireYieldsCheck from './rules/requireYieldsCheck';\nimport tagLines from './rules/tagLines';\nimport validTypes from './rules/validTypes';\n\nexport default {\n configs: {\n recommended: {\n plugins: ['jsdoc'],\n rules: {\n 'jsdoc/check-access': 'warn',\n 'jsdoc/check-alignment': 'warn',\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': 'warn',\n 'jsdoc/check-property-names': 'warn',\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': 'warn',\n 'jsdoc/check-types': 'warn',\n 'jsdoc/check-values': 'warn',\n 'jsdoc/empty-tags': 'warn',\n 'jsdoc/implements-on-classes': 'warn',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': 'warn',\n 'jsdoc/newline-after-description': 'warn',\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-defaults': 'off',\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': 'warn',\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': 'warn',\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': 'warn',\n 'jsdoc/require-param': 'warn',\n 'jsdoc/require-param-description': 'warn',\n 'jsdoc/require-param-name': 'warn',\n 'jsdoc/require-param-type': 'warn',\n 'jsdoc/require-property': 'warn',\n 'jsdoc/require-property-description': 'warn',\n 'jsdoc/require-property-name': 'warn',\n 'jsdoc/require-property-type': 'warn',\n 'jsdoc/require-returns': 'warn',\n 'jsdoc/require-returns-check': 'warn',\n 'jsdoc/require-returns-description': 'warn',\n 'jsdoc/require-returns-type': 'warn',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-yields': 'warn',\n 'jsdoc/require-yields-check': 'warn',\n 'jsdoc/tag-lines': 'warn',\n 'jsdoc/valid-types': 'warn',\n },\n },\n },\n rules: {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'newline-after-description': newlineAfterDescription,\n 'no-bad-blocks': noBadBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-throws': requireThrows,\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'tag-lines': tagLines,\n 'valid-types': validTypes,\n },\n};\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["configs","recommended","plugins","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTypes","checkValues","emptyTags","implementsOnClasses","matchDescription","matchName","multilineBlocks","newlineAfterDescription","noBadBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireThrows","requireYields","requireYieldsCheck","tagLines","validTypes"],"mappings":"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","sourcesContent":["import checkAccess from './rules/checkAccess';\nimport checkAlignment from './rules/checkAlignment';\nimport checkExamples from './rules/checkExamples';\nimport checkIndentation from './rules/checkIndentation';\nimport checkLineAlignment from './rules/checkLineAlignment';\nimport checkParamNames from './rules/checkParamNames';\nimport checkPropertyNames from './rules/checkPropertyNames';\nimport checkSyntax from './rules/checkSyntax';\nimport checkTagNames from './rules/checkTagNames';\nimport checkTypes from './rules/checkTypes';\nimport checkValues from './rules/checkValues';\nimport emptyTags from './rules/emptyTags';\nimport implementsOnClasses from './rules/implementsOnClasses';\nimport matchDescription from './rules/matchDescription';\nimport matchName from './rules/matchName';\nimport multilineBlocks from './rules/multilineBlocks';\nimport newlineAfterDescription from './rules/newlineAfterDescription';\nimport noBadBlocks from './rules/noBadBlocks';\nimport noDefaults from './rules/noDefaults';\nimport noMissingSyntax from './rules/noMissingSyntax';\nimport noMultiAsterisks from './rules/noMultiAsterisks';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax';\nimport noTypes from './rules/noTypes';\nimport noUndefinedTypes from './rules/noUndefinedTypes';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix';\nimport requireDescription from './rules/requireDescription';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence';\nimport requireExample from './rules/requireExample';\nimport requireFileOverview from './rules/requireFileOverview';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription';\nimport requireJsdoc from './rules/requireJsdoc';\nimport requireParam from './rules/requireParam';\nimport requireParamDescription from './rules/requireParamDescription';\nimport requireParamName from './rules/requireParamName';\nimport requireParamType from './rules/requireParamType';\nimport requireProperty from './rules/requireProperty';\nimport requirePropertyDescription from './rules/requirePropertyDescription';\nimport requirePropertyName from './rules/requirePropertyName';\nimport requirePropertyType from './rules/requirePropertyType';\nimport requireReturns from './rules/requireReturns';\nimport requireReturnsCheck from './rules/requireReturnsCheck';\nimport requireReturnsDescription from './rules/requireReturnsDescription';\nimport requireReturnsType from './rules/requireReturnsType';\nimport requireThrows from './rules/requireThrows';\nimport requireYields from './rules/requireYields';\nimport requireYieldsCheck from './rules/requireYieldsCheck';\nimport tagLines from './rules/tagLines';\nimport validTypes from './rules/validTypes';\n\nexport default {\n configs: {\n recommended: {\n plugins: [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': 'warn',\n 'jsdoc/check-alignment': 'warn',\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': 'warn',\n 'jsdoc/check-property-names': 'warn',\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': 'warn',\n 'jsdoc/check-types': 'warn',\n 'jsdoc/check-values': 'warn',\n 'jsdoc/empty-tags': 'warn',\n 'jsdoc/implements-on-classes': 'warn',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': 'warn',\n 'jsdoc/newline-after-description': 'warn',\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-defaults': 'off',\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': 'warn',\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': 'warn',\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': 'warn',\n 'jsdoc/require-param': 'warn',\n 'jsdoc/require-param-description': 'warn',\n 'jsdoc/require-param-name': 'warn',\n 'jsdoc/require-param-type': 'warn',\n 'jsdoc/require-property': 'warn',\n 'jsdoc/require-property-description': 'warn',\n 'jsdoc/require-property-name': 'warn',\n 'jsdoc/require-property-type': 'warn',\n 'jsdoc/require-returns': 'warn',\n 'jsdoc/require-returns-check': 'warn',\n 'jsdoc/require-returns-description': 'warn',\n 'jsdoc/require-returns-type': 'warn',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-yields': 'warn',\n 'jsdoc/require-yields-check': 'warn',\n 'jsdoc/tag-lines': 'warn',\n 'jsdoc/valid-types': 'warn',\n },\n },\n },\n rules: {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'newline-after-description': newlineAfterDescription,\n 'no-bad-blocks': noBadBlocks,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-throws': requireThrows,\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'tag-lines': tagLines,\n 'valid-types': validTypes,\n },\n};\n"],"file":"index.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["rewireSpecs","seedTokens","util","globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","ignoreReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/valid-types */\n\nimport {\n getReducedASTNode,\n getJSDocComment,\n commentHandler,\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n util,\n} from 'comment-parser';\nimport jsdocUtils from './jsdocUtils';\n\nconst {\n rewireSpecs,\n seedTokens,\n} = util;\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({tagName}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n ignoreReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {end, lineEnd, postDelimiter, tag, postTag, name, type, description},\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({tokens: {description, tag, end}}, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n for (const [idx, src] of tag.source.entries()) {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n }\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [{\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n }];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({tokens: {tag, end}}) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [idx, src] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n for (const prop of [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ]) {\n tokens[prop] = '';\n }\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n\n const makeLines = () => {\n return Array.from({length: numLines}, makeLine);\n };\n\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [idx, src] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.makeMultiline = () => {\n const {source: [{tokens}]} = jsdoc;\n const {postDelimiter, description, lineEnd, tag, name, type} = tokens;\n\n let {tokens: {\n postName, postTag, postType,\n }} = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n ['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n ignoreReplacesDocs !== false &&\n (utils.hasTag('ignore') || utils.classHasTag('ignore')) ||\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : ['inheritdoc'],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n for (const method of [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {otherMode: true} : false;\n };\n }\n\n for (const method of [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {otherMode: false};\n };\n }\n\n for (const method of [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ]) {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n }\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if (['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {tags} = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({tag}) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(matchingJsdocTag, targetTagName);\n }\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable canonical/sort-keys */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`,\n // `require-returns`, `require-throw`, `require-yields`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n ignoreReplacesDocs: context.settings.jsdoc?.ignoreReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable canonical/sort-keys */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n\n // Todo: Remove ignore once `check-examples` can be restored for ESLint 8+\n // istanbul ignore if\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (\n utils.hasTag('private') ||\n jsdoc.tags\n .filter(({tag}) => {\n return tag === 'access';\n })\n .some(({description}) => {\n return description === 'private';\n })\n )\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [indnt, jsdc];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n for (const jsdocNode of jsdocNodes) {\n if (!(/^\\/\\*\\*\\s/u).test(sourceCode.getText(jsdocNode))) {\n continue;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n for (const [idx, {comment}] of contexts.entries()) {\n if (comment && handler(comment, jsdoc) === false) {\n continue;\n }\n\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n continue;\n }\n\n let lastComment;\n let lastIndex;\n // eslint-disable-next-line no-loop-func\n if (contexts && contexts.every(({comment}, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n continue;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [commentNode], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n // eslint-disable-next-line unicorn/prefer-export-from -- Avoid experimental parser\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {...obj, context: 'any'};\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n for (const prop of [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ]) {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n }\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
1
+ {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["rewireSpecs","seedTokens","util","globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","ignoreReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"mappings":"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","sourcesContent":["/* eslint-disable jsdoc/valid-types */\n\nimport {\n getReducedASTNode,\n getJSDocComment,\n commentHandler,\n parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n util,\n} from 'comment-parser';\nimport jsdocUtils from './jsdocUtils';\n\nconst {\n rewireSpecs,\n seedTokens,\n} = util;\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {\n tagNamePreference,\n mode,\n}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({\n tagName,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n ignoreReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag([\n 'callback', 'function', 'func', 'method',\n ]);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {\n end,\n lineEnd,\n postDelimiter,\n tag,\n postTag,\n name,\n type,\n description,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({\n tokens: {\n description,\n tag,\n end,\n },\n }, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n for (const [\n idx,\n src,\n ] of tag.source.entries()) {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n }\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [\n {\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n },\n ];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({\n tokens: {\n tag,\n end,\n },\n }) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n for (const prop of [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ]) {\n tokens[prop] = '';\n }\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {\n source: tagSource,\n } = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({\n number,\n }) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n\n const makeLines = () => {\n return Array.from({\n length: numLines,\n }, makeLine);\n };\n\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber,\n tokens: {\n end,\n },\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(lastIndex).entries()) {\n src.number = firstNumber + lastIndex + idx;\n }\n };\n\n utils.makeMultiline = () => {\n const {\n source: [\n {\n tokens,\n },\n ],\n } = jsdoc;\n const {\n postDelimiter,\n description,\n lineEnd,\n tag,\n name,\n type,\n } = tokens;\n\n let {\n tokens: {\n postName,\n postTag,\n postType,\n },\n } = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n [\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({\n tagName,\n });\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({\n tagName,\n skipReportingBlockedTag = false,\n allowObjectReturn = false,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n }) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n ignoreReplacesDocs !== false &&\n (utils.hasTag('ignore') || utils.classHasTag('ignore')) ||\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag([\n 'augments', 'extends',\n ]) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : [\n 'inheritdoc',\n ],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n for (const method of [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {\n otherMode: true,\n } : false;\n };\n }\n\n for (const method of [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ]) {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {\n otherMode: false,\n };\n };\n }\n\n for (const method of [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ]) {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n }\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if ([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n ].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {\n tags,\n } = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [\n ...ancestors, node,\n ].reverse().find((parent) => {\n return parent && [\n 'ClassDeclaration', 'ClassExpression',\n ].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(matchingJsdocTag, targetTagName);\n }\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable canonical/sort-keys */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`,\n // `require-returns`, `require-throw`, `require-yields`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n ignoreReplacesDocs: context.settings.jsdoc?.ignoreReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable canonical/sort-keys */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {\n line: lineNumber,\n },\n start: {\n line: lineNumber,\n },\n };\n\n // Todo: Remove ignore once `check-examples` can be restored for ESLint 8+\n // istanbul ignore if\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (\n utils.hasTag('private') ||\n jsdoc.tags\n .filter(({\n tag,\n }) => {\n return tag === 'access';\n })\n .some(({\n description,\n }) => {\n return description === 'private';\n })\n )\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [\n indnt, jsdc,\n ];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n for (const jsdocNode of jsdocNodes) {\n if (!(/^\\/\\*\\*\\s/u).test(sourceCode.getText(jsdocNode))) {\n continue;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n for (const [\n idx,\n {\n comment,\n },\n ] of contexts.entries()) {\n if (comment && handler(comment, jsdoc) === false) {\n continue;\n }\n\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n continue;\n }\n\n let lastComment;\n let lastIndex;\n // eslint-disable-next-line no-loop-func\n if (contexts && contexts.every(({\n comment,\n }, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n continue;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent,\n jsdoc,\n ruleConfig,\n context,\n lines,\n jsdocNode,\n node,\n settings,\n sourceCode,\n iterator,\n state,\n true,\n );\n }\n\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [\n commentNode,\n ], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {\n lines,\n } = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n // eslint-disable-next-line unicorn/prefer-export-from -- Avoid experimental parser\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || ![\n 'problem', 'suggestion', 'layout',\n ].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {\n ...obj,\n context: 'any',\n };\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n\n const sourceCode = context.getSourceCode();\n const {\n lines,\n } = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [\n indent,\n jsdoc,\n ] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc, ruleConfig, context, lines, jsdocNode, node, settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n for (const prop of [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ]) {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n }\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}