eslint-plugin-jsdoc 40.0.2 → 40.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +10 -0
  2. package/dist/WarnSettings.js.map +1 -1
  3. package/dist/alignTransform.js.map +1 -1
  4. package/dist/bin/generateRule.js.map +1 -1
  5. package/dist/defaultTagOrder.js.map +1 -1
  6. package/dist/exportParser.js.map +1 -1
  7. package/dist/generateRule.js.map +1 -1
  8. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  9. package/dist/index.js +20 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/iterateJsdoc.js.map +1 -1
  12. package/dist/jsdocUtils.js.map +1 -1
  13. package/dist/rules/checkAccess.js.map +1 -1
  14. package/dist/rules/checkAlignment.js.map +1 -1
  15. package/dist/rules/checkExamples.js.map +1 -1
  16. package/dist/rules/checkIndentation.js.map +1 -1
  17. package/dist/rules/checkLineAlignment.js.map +1 -1
  18. package/dist/rules/checkParamNames.js.map +1 -1
  19. package/dist/rules/checkPropertyNames.js.map +1 -1
  20. package/dist/rules/checkSyntax.js.map +1 -1
  21. package/dist/rules/checkTagNames.js.map +1 -1
  22. package/dist/rules/checkTypes.js.map +1 -1
  23. package/dist/rules/checkValues.js.map +1 -1
  24. package/dist/rules/emptyTags.js.map +1 -1
  25. package/dist/rules/implementsOnClasses.js.map +1 -1
  26. package/dist/rules/matchDescription.js.map +1 -1
  27. package/dist/rules/matchName.js.map +1 -1
  28. package/dist/rules/multilineBlocks.js.map +1 -1
  29. package/dist/rules/newlineAfterDescription.js.map +1 -1
  30. package/dist/rules/noBadBlocks.js.map +1 -1
  31. package/dist/rules/noDefaults.js.map +1 -1
  32. package/dist/rules/noMissingSyntax.js.map +1 -1
  33. package/dist/rules/noMultiAsterisks.js.map +1 -1
  34. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  35. package/dist/rules/noTypes.js.map +1 -1
  36. package/dist/rules/noUndefinedTypes.js.map +1 -1
  37. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  38. package/dist/rules/requireDescription.js.map +1 -1
  39. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  40. package/dist/rules/requireExample.js.map +1 -1
  41. package/dist/rules/requireFileOverview.js.map +1 -1
  42. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  43. package/dist/rules/requireJsdoc.js.map +1 -1
  44. package/dist/rules/requireParam.js.map +1 -1
  45. package/dist/rules/requireParamDescription.js.map +1 -1
  46. package/dist/rules/requireParamName.js.map +1 -1
  47. package/dist/rules/requireParamType.js.map +1 -1
  48. package/dist/rules/requireProperty.js.map +1 -1
  49. package/dist/rules/requirePropertyDescription.js.map +1 -1
  50. package/dist/rules/requirePropertyName.js.map +1 -1
  51. package/dist/rules/requirePropertyType.js.map +1 -1
  52. package/dist/rules/requireReturns.js.map +1 -1
  53. package/dist/rules/requireReturnsCheck.js.map +1 -1
  54. package/dist/rules/requireReturnsDescription.js.map +1 -1
  55. package/dist/rules/requireReturnsType.js.map +1 -1
  56. package/dist/rules/requireThrows.js.map +1 -1
  57. package/dist/rules/requireYields.js.map +1 -1
  58. package/dist/rules/requireYieldsCheck.js.map +1 -1
  59. package/dist/rules/sortTags.js.map +1 -1
  60. package/dist/rules/tagLines.js.map +1 -1
  61. package/dist/rules/textEscaping.js.map +1 -1
  62. package/dist/rules/validTypes.js.map +1 -1
  63. package/dist/tagNames.js.map +1 -1
  64. package/dist/utils/hasReturnValue.js.map +1 -1
  65. package/package.json +15 -15
package/dist/index.js CHANGED
@@ -110,8 +110,8 @@ const index = {
110
110
  'valid-types': _validTypes.default
111
111
  }
112
112
  };
113
- for (const [config, warnOrError] of [['recommended', 'warn'], ['recommended-error', 'error']]) {
114
- index.configs[config] = {
113
+ const createRecommendedRuleset = warnOrError => {
114
+ return {
115
115
  plugins: ['jsdoc'],
116
116
  rules: {
117
117
  'jsdoc/check-access': warnOrError,
@@ -166,7 +166,24 @@ for (const [config, warnOrError] of [['recommended', 'warn'], ['recommended-erro
166
166
  'jsdoc/valid-types': warnOrError
167
167
  }
168
168
  };
169
- }
169
+ };
170
+ const createRecommendedTypeScriptRuleset = warnOrError => {
171
+ const ruleset = createRecommendedRuleset(warnOrError);
172
+ return {
173
+ ...ruleset,
174
+ rules: {
175
+ ...ruleset.rules,
176
+ 'jsdoc/no-types': warnOrError,
177
+ 'jsdoc/require-param-type': 'off',
178
+ 'jsdoc/require-property-type': 'off',
179
+ 'jsdoc/require-returns-type': 'off'
180
+ }
181
+ };
182
+ };
183
+ index.configs.recommended = createRecommendedRuleset('warn');
184
+ index.configs['recommended-error'] = createRecommendedRuleset('error');
185
+ index.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');
186
+ index.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');
170
187
  var _default = index;
171
188
  exports.default = _default;
172
189
  module.exports = exports.default;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["index","configs","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","sortTags","tagLines","textEscaping","validTypes","config","warnOrError","plugins"],"sources":["../src/index.js"],"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 sortTags from './rules/sortTags';\nimport tagLines from './rules/tagLines';\nimport textEscaping from './rules/textEscaping';\nimport validTypes from './rules/validTypes';\n\nconst index = {\n configs: {},\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 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'valid-types': validTypes,\n },\n};\n\nfor (const [\n config,\n warnOrError,\n] of [\n [\n 'recommended',\n 'warn',\n ],\n [\n 'recommended-error',\n 'error',\n ],\n ]\n) {\n index.configs[config] = {\n plugins: [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/newline-after-description': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-defaults': 'off',\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\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': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n}\n\nexport default index;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_checkAccess","_interopRequireDefault","require","_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","_sortTags","_tagLines","_textEscaping","_validTypes","obj","__esModule","default","index","configs","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","sortTags","tagLines","textEscaping","validTypes","createRecommendedRuleset","warnOrError","plugins","createRecommendedTypeScriptRuleset","ruleset","recommended","_default","exports","module"],"sources":["../src/index.js"],"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 sortTags from './rules/sortTags';\nimport tagLines from './rules/tagLines';\nimport textEscaping from './rules/textEscaping';\nimport validTypes from './rules/validTypes';\n\nconst index = {\n configs: {},\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 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'valid-types': validTypes,\n },\n};\n\nconst createRecommendedRuleset = (warnOrError) => {\n return {\n plugins: [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/newline-after-description': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-defaults': 'off',\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\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': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\nconst createRecommendedTypeScriptRuleset = (warnOrError) => {\n const ruleset = createRecommendedRuleset(warnOrError);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n },\n };\n};\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\n\nexport default index;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"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","commentStringify","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","returnArray","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","setTagDescription","matcher","setter","finalIdx","idx","test","getDescription","lastDescriptionLine","length","setDescriptionLines","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","getFirstLine","firstLine","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","mayBeUndefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","allBranches","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","getJSDocComment","parseComment","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","exemptDestructuredRootsFromChecks","parserPath","languageOptions","parser","contexts","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","indnt","charAt","repeat","jsdc","iterateAllJsdocs","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","getText","comment","selector","lastComment","exit","create","commentHandler","noTracking","has","nonComment","add","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","nonGlobalSettings","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"sources":["../src/iterateJsdoc.js"],"sourcesContent":["import {\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// todo: Change these `any` types once importing types properly.\n\n/**\n * Should use ESLint rule's typing.\n *\n * @typedef {any} EslintRuleMeta\n */\n\n/**\n * A plain object for tracking state as needed by rules across iterations.\n *\n * @typedef {any} StateObject\n */\n\n/**\n * The Node AST as supplied by the parser.\n *\n * @typedef {any} Node\n */\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, returnArray) => {\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 returnArray ? descriptions : descriptions.join('\\n');\n };\n\n utils.setTagDescription = (tg, matcher, setter) => {\n let finalIdx = 0;\n tg.source.some(({\n tokens: {\n description,\n },\n }, idx) => {\n if (description && matcher.test(description)) {\n tg.source[idx].tokens.description = setter(description);\n finalIdx = idx;\n return true;\n }\n\n return false;\n });\n\n return finalIdx;\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 if (!tag && description) {\n descriptions.push(description);\n }\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description || (descriptions.length ? '' : '\\n'));\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n descriptions,\n lastDescriptionLine,\n };\n };\n\n utils.setDescriptionLines = (matcher, setter) => {\n let finalIdx = 0;\n jsdoc.source.some(({\n tokens: {\n description,\n tag,\n end,\n },\n }, idx) => {\n // istanbul ignore if -- Already checked\n if (idx && (tag || end)) {\n return true;\n }\n\n if (description && matcher.test(description)) {\n jsdoc.source[idx].tokens.description = setter(description);\n finalIdx = idx;\n return true;\n }\n\n return false;\n });\n\n return finalIdx;\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 // Todo: Once rewiring of tags may be fixed in comment-parser to reflect missing tags,\n // this step should be added here (so that, e.g., if accessing `jsdoc.tags`,\n // such as to add a new tag, the correct information will be available)\n };\n\n utils.addTag = (\n targetTagName,\n number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? jsdoc.source.findIndex(({\n tokens: {\n tag,\n },\n }) => {\n return tag;\n }) - 1) + 1,\n tokens = {},\n ) => {\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n ...tokens,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.getFirstLine = () => {\n let firstLine;\n for (const {\n number,\n tokens: {\n tag,\n },\n } of jsdoc.source) {\n if (tag) {\n firstLine = number;\n break;\n }\n }\n\n return firstLine;\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 for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\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.mayBeUndefinedTypeTag = (tag) => {\n return jsdocUtils.mayBeUndefinedTypeTag(tag, settings.mode);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn, allBranches) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn, allBranches);\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 return parseComment(classJsdocNode, '');\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 // `require-param-type`, `require-param-description`\n exemptDestructuredRootsFromChecks: context.settings.jsdoc?.exemptDestructuredRootsFromChecks,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath?.includes('@typescript-eslint') ||\n context.languageOptions?.parser?.meta?.name?.includes('typescript') ?\n 'typescript' : 'jsdoc'),\n\n // Many rules\n contexts: context.settings.jsdoc?.contexts,\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 column: 0,\n line: lineNumber,\n },\n start: {\n column: 0,\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/* eslint-disable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\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: Node | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n/* eslint-enable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\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, '');\n\n return [\n indnt, jsdc,\n ];\n};\n\n/**\n *\n * @typedef {{node: Node, state: StateObject}} NonCommentArgs\n */\n\n/**\n * Our internal dynamic set of utilities.\n *\n * @todo Document\n * @typedef {any} Utils\n */\n\n/**\n * @typedef {object} RuleConfig\n * @property {EslintRuleMeta} meta ESLint rule meta\n * @property {import('./jsdocUtils').DefaultContexts} [contextDefaults] Any default contexts\n * @property {true} [contextSelected] Whether to force a `contexts` check\n * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default\n * regardless of context\n * @property {(context, state: StateObject, utils: Utils) => void} [exit] Handler to be executed\n * upon exiting iteration of program AST\n * @property {(NonCommentArgs) => void} [nonComment] Handler to be executed if rule wishes\n * to be supplied nodes without comments\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 {RuleConfig} ruleConfig The rule's configuration\n * @param contexts The `contexts` containing relevant `comment` info.\n * @param {boolean} additiveCommentContexts If true, will have a separate\n * iteration for each matching comment context. Otherwise, will iterate\n * once if there is a single matching comment context.\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveCommentContexts) => {\n const trackedJsdocs = new Set();\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 (additiveCommentContexts) {\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 settings,\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 commentNode = getJSDocComment(sourceCode, node, settings);\n if (!ruleConfig.noTracking && trackedJsdocs.has(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.add(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.has(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 {RuleConfig} 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 {RuleConfig} 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, ruleConfig.nonGlobalSettings ? {} : settings);\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 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 'TSDeclareFunction',\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 settings,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"iterateJsdoc.js","names":["_jsdoccomment","require","_commentParser","_jsdocUtils","_interopRequireDefault","obj","__esModule","default","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","commentStringify","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","returnArray","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","setTagDescription","matcher","setter","finalIdx","idx","test","getDescription","lastDescriptionLine","length","setDescriptionLines","changeTag","src","entries","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","_jsdoc$tags","_jsdoc$tags$source$","getFirstLine","firstLine","emptyTokens","prop","addLine","_jsdoc$source","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","_context$options$","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","mayBeUndefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","allBranches","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","getJSDocComment","parseComment","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","matchingJsdocTag","getSettings","_context$settings$jsd","_context$settings$jsd2","_context$settings$jsd3","_context$settings$jsd4","_context$settings$jsd5","_context$settings$jsd6","_context$settings$jsd7","_context$settings$jsd8","_context$settings$jsd9","_context$settings$jsd10","_context$settings$jsd11","_context$settings$jsd12","_context$settings$jsd13","_context$parserPath","_context$languageOpti","_context$languageOpti2","_context$languageOpti3","_context$languageOpti4","_context$settings$jsd14","ignorePrivate","ignoreInternal","Number","preferredTypes","exemptDestructuredRootsFromChecks","parserPath","languageOptions","parser","contexts","setTagStructure","overrideTagStructure","error","exports","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","indnt","charAt","repeat","jsdc","iterateAllJsdocs","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","getText","comment","selector","lastComment","exit","create","commentHandler","*:not(Program)","noTracking","has","nonComment","add","Program:exit","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","_ruleConfig$meta","metaType","TypeError","contextDefaults","contextSelected","matchContext","_context$options$2","_contexts","_contexts2","match","enforcedContexts","nonGlobalSettings","map","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"sources":["../src/iterateJsdoc.js"],"sourcesContent":["import {\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// todo: Change these `any` types once importing types properly.\n\n/**\n * Should use ESLint rule's typing.\n *\n * @typedef {any} EslintRuleMeta\n */\n\n/**\n * A plain object for tracking state as needed by rules across iterations.\n *\n * @typedef {any} StateObject\n */\n\n/**\n * The Node AST as supplied by the parser.\n *\n * @typedef {any} Node\n */\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, returnArray) => {\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 returnArray ? descriptions : descriptions.join('\\n');\n };\n\n utils.setTagDescription = (tg, matcher, setter) => {\n let finalIdx = 0;\n tg.source.some(({\n tokens: {\n description,\n },\n }, idx) => {\n if (description && matcher.test(description)) {\n tg.source[idx].tokens.description = setter(description);\n finalIdx = idx;\n return true;\n }\n\n return false;\n });\n\n return finalIdx;\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 if (!tag && description) {\n descriptions.push(description);\n }\n\n return true;\n }\n\n if (idx || description) {\n descriptions.push(description || (descriptions.length ? '' : '\\n'));\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n descriptions,\n lastDescriptionLine,\n };\n };\n\n utils.setDescriptionLines = (matcher, setter) => {\n let finalIdx = 0;\n jsdoc.source.some(({\n tokens: {\n description,\n tag,\n end,\n },\n }, idx) => {\n // istanbul ignore if -- Already checked\n if (idx && (tag || end)) {\n return true;\n }\n\n if (description && matcher.test(description)) {\n jsdoc.source[idx].tokens.description = setter(description);\n finalIdx = idx;\n return true;\n }\n\n return false;\n });\n\n return finalIdx;\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 // Todo: Once rewiring of tags may be fixed in comment-parser to reflect missing tags,\n // this step should be added here (so that, e.g., if accessing `jsdoc.tags`,\n // such as to add a new tag, the correct information will be available)\n };\n\n utils.addTag = (\n targetTagName,\n number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? jsdoc.source.findIndex(({\n tokens: {\n tag,\n },\n }) => {\n return tag;\n }) - 1) + 1,\n tokens = {},\n ) => {\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n ...tokens,\n }),\n });\n for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\n }\n };\n\n utils.getFirstLine = () => {\n let firstLine;\n for (const {\n number,\n tokens: {\n tag,\n },\n } of jsdoc.source) {\n if (tag) {\n firstLine = number;\n break;\n }\n }\n\n return firstLine;\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 for (const src of jsdoc.source.slice(number + 1)) {\n src.number++;\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.mayBeUndefinedTypeTag = (tag) => {\n return jsdocUtils.mayBeUndefinedTypeTag(tag, settings.mode);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn, allBranches) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn, allBranches);\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 return parseComment(classJsdocNode, '');\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 // `require-param-type`, `require-param-description`\n exemptDestructuredRootsFromChecks: context.settings.jsdoc?.exemptDestructuredRootsFromChecks,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath?.includes('@typescript-eslint') ||\n context.languageOptions?.parser?.meta?.name?.includes('typescript') ?\n 'typescript' : 'jsdoc'),\n\n // Many rules\n contexts: context.settings.jsdoc?.contexts,\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 column: 0,\n line: lineNumber,\n },\n start: {\n column: 0,\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/* eslint-disable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\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: Node | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n/* eslint-enable jsdoc/no-undefined-types -- canonical still using an older version where not defined */\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, '');\n\n return [\n indnt, jsdc,\n ];\n};\n\n/**\n *\n * @typedef {{node: Node, state: StateObject}} NonCommentArgs\n */\n\n/**\n * Our internal dynamic set of utilities.\n *\n * @todo Document\n * @typedef {any} Utils\n */\n\n/**\n * @typedef {object} RuleConfig\n * @property {EslintRuleMeta} meta ESLint rule meta\n * @property {import('./jsdocUtils').DefaultContexts} [contextDefaults] Any default contexts\n * @property {true} [contextSelected] Whether to force a `contexts` check\n * @property {true} [iterateAllJsdocs] Whether to iterate all JSDoc blocks by default\n * regardless of context\n * @property {(context, state: StateObject, utils: Utils) => void} [exit] Handler to be executed\n * upon exiting iteration of program AST\n * @property {(NonCommentArgs) => void} [nonComment] Handler to be executed if rule wishes\n * to be supplied nodes without comments\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 {RuleConfig} ruleConfig The rule's configuration\n * @param contexts The `contexts` containing relevant `comment` info.\n * @param {boolean} additiveCommentContexts If true, will have a separate\n * iteration for each matching comment context. Otherwise, will iterate\n * once if there is a single matching comment context.\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveCommentContexts) => {\n const trackedJsdocs = new Set();\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 (additiveCommentContexts) {\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 settings,\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 commentNode = getJSDocComment(sourceCode, node, settings);\n if (!ruleConfig.noTracking && trackedJsdocs.has(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.add(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.has(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 {RuleConfig} 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 {RuleConfig} 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, ruleConfig.nonGlobalSettings ? {} : settings);\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 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 'TSDeclareFunction',\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 settings,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"mappings":"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"}