eslint-plugin-jsdoc 40.3.0 → 41.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.
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ var _checkTypes = _interopRequireDefault(require("./rules/checkTypes"));
17
17
  var _checkValues = _interopRequireDefault(require("./rules/checkValues"));
18
18
  var _emptyTags = _interopRequireDefault(require("./rules/emptyTags"));
19
19
  var _implementsOnClasses = _interopRequireDefault(require("./rules/implementsOnClasses"));
20
+ var _informativeDocs = _interopRequireDefault(require("./rules/informativeDocs"));
20
21
  var _matchDescription = _interopRequireDefault(require("./rules/matchDescription"));
21
22
  var _matchName = _interopRequireDefault(require("./rules/matchName"));
22
23
  var _multilineBlocks = _interopRequireDefault(require("./rules/multilineBlocks"));
@@ -72,6 +73,7 @@ const index = {
72
73
  'check-values': _checkValues.default,
73
74
  'empty-tags': _emptyTags.default,
74
75
  'implements-on-classes': _implementsOnClasses.default,
76
+ 'informative-docs': _informativeDocs.default,
75
77
  'match-description': _matchDescription.default,
76
78
  'match-name': _matchName.default,
77
79
  'multiline-blocks': _multilineBlocks.default,
@@ -129,6 +131,7 @@ const createRecommendedRuleset = warnOrError => {
129
131
  'jsdoc/check-values': warnOrError,
130
132
  'jsdoc/empty-tags': warnOrError,
131
133
  'jsdoc/implements-on-classes': warnOrError,
134
+ 'jsdoc/informative-docs': 'off',
132
135
  'jsdoc/match-description': 'off',
133
136
  'jsdoc/match-name': 'off',
134
137
  'jsdoc/multiline-blocks': warnOrError,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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","_noBlankBlockDescriptions","_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","noBlankBlockDescriptions","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","typed","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 noBlankBlockDescriptions from './rules/noBlankBlockDescriptions';\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-blank-block-descriptions': noBlankBlockDescriptions,\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-blank-block-descriptions': '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 /* eslint-disable indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable indent */\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
+ {"version":3,"file":"index.js","names":["_checkAccess","_interopRequireDefault","require","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTypes","_checkValues","_emptyTags","_implementsOnClasses","_informativeDocs","_matchDescription","_matchName","_multilineBlocks","_newlineAfterDescription","_noBadBlocks","_noBlankBlockDescriptions","_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","informativeDocs","matchDescription","matchName","multilineBlocks","newlineAfterDescription","noBadBlocks","noBlankBlockDescriptions","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","typed","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 informativeDocs from './rules/informativeDocs';\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 noBlankBlockDescriptions from './rules/noBlankBlockDescriptions';\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 'informative-docs': informativeDocs,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'newline-after-description': newlineAfterDescription,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\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/informative-docs': 'off',\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-blank-block-descriptions': '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 /* eslint-disable indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable indent */\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":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,eAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,iBAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,mBAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,gBAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,mBAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,YAAA,GAAAR,sBAAA,CAAAC,OAAA;AACA,IAAAQ,cAAA,GAAAT,sBAAA,CAAAC,OAAA;AACA,IAAAS,WAAA,GAAAV,sBAAA,CAAAC,OAAA;AACA,IAAAU,YAAA,GAAAX,sBAAA,CAAAC,OAAA;AACA,IAAAW,UAAA,GAAAZ,sBAAA,CAAAC,OAAA;AACA,IAAAY,oBAAA,GAAAb,sBAAA,CAAAC,OAAA;AACA,IAAAa,gBAAA,GAAAd,sBAAA,CAAAC,OAAA;AACA,IAAAc,iBAAA,GAAAf,sBAAA,CAAAC,OAAA;AACA,IAAAe,UAAA,GAAAhB,sBAAA,CAAAC,OAAA;AACA,IAAAgB,gBAAA,GAAAjB,sBAAA,CAAAC,OAAA;AACA,IAAAiB,wBAAA,GAAAlB,sBAAA,CAAAC,OAAA;AACA,IAAAkB,YAAA,GAAAnB,sBAAA,CAAAC,OAAA;AACA,IAAAmB,yBAAA,GAAApB,sBAAA,CAAAC,OAAA;AACA,IAAAoB,WAAA,GAAArB,sBAAA,CAAAC,OAAA;AACA,IAAAqB,gBAAA,GAAAtB,sBAAA,CAAAC,OAAA;AACA,IAAAsB,iBAAA,GAAAvB,sBAAA,CAAAC,OAAA;AACA,IAAAuB,mBAAA,GAAAxB,sBAAA,CAAAC,OAAA;AACA,IAAAwB,QAAA,GAAAzB,sBAAA,CAAAC,OAAA;AACA,IAAAyB,iBAAA,GAAA1B,sBAAA,CAAAC,OAAA;AACA,IAAA0B,sBAAA,GAAA3B,sBAAA,CAAAC,OAAA;AACA,IAAA2B,mBAAA,GAAA5B,sBAAA,CAAAC,OAAA;AACA,IAAA4B,mCAAA,GAAA7B,sBAAA,CAAAC,OAAA;AACA,IAAA6B,eAAA,GAAA9B,sBAAA,CAAAC,OAAA;AACA,IAAA8B,oBAAA,GAAA/B,sBAAA,CAAAC,OAAA;AACA,IAAA+B,oCAAA,GAAAhC,sBAAA,CAAAC,OAAA;AACA,IAAAgC,aAAA,GAAAjC,sBAAA,CAAAC,OAAA;AACA,IAAAiC,aAAA,GAAAlC,sBAAA,CAAAC,OAAA;AACA,IAAAkC,wBAAA,GAAAnC,sBAAA,CAAAC,OAAA;AACA,IAAAmC,iBAAA,GAAApC,sBAAA,CAAAC,OAAA;AACA,IAAAoC,iBAAA,GAAArC,sBAAA,CAAAC,OAAA;AACA,IAAAqC,gBAAA,GAAAtC,sBAAA,CAAAC,OAAA;AACA,IAAAsC,2BAAA,GAAAvC,sBAAA,CAAAC,OAAA;AACA,IAAAuC,oBAAA,GAAAxC,sBAAA,CAAAC,OAAA;AACA,IAAAwC,oBAAA,GAAAzC,sBAAA,CAAAC,OAAA;AACA,IAAAyC,eAAA,GAAA1C,sBAAA,CAAAC,OAAA;AACA,IAAA0C,oBAAA,GAAA3C,sBAAA,CAAAC,OAAA;AACA,IAAA2C,0BAAA,GAAA5C,sBAAA,CAAAC,OAAA;AACA,IAAA4C,mBAAA,GAAA7C,sBAAA,CAAAC,OAAA;AACA,IAAA6C,cAAA,GAAA9C,sBAAA,CAAAC,OAAA;AACA,IAAA8C,cAAA,GAAA/C,sBAAA,CAAAC,OAAA;AACA,IAAA+C,mBAAA,GAAAhD,sBAAA,CAAAC,OAAA;AACA,IAAAgD,SAAA,GAAAjD,sBAAA,CAAAC,OAAA;AACA,IAAAiD,SAAA,GAAAlD,sBAAA,CAAAC,OAAA;AACA,IAAAkD,aAAA,GAAAnD,sBAAA,CAAAC,OAAA;AACA,IAAAmD,WAAA,GAAApD,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAqD,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE5C,MAAMG,KAAK,GAAG;EACZC,OAAO,EAAE,CAAC,CAAC;EACXC,KAAK,EAAE;IACL,cAAc,EAAEC,oBAAW;IAC3B,iBAAiB,EAAEC,uBAAc;IACjC,gBAAgB,EAAEC,sBAAa;IAC/B,mBAAmB,EAAEC,yBAAgB;IACrC,sBAAsB,EAAEC,2BAAkB;IAC1C,mBAAmB,EAAEC,wBAAe;IACpC,sBAAsB,EAAEC,2BAAkB;IAC1C,cAAc,EAAEC,oBAAW;IAC3B,iBAAiB,EAAEC,sBAAa;IAChC,aAAa,EAAEC,mBAAU;IACzB,cAAc,EAAEC,oBAAW;IAC3B,YAAY,EAAEC,kBAAS;IACvB,uBAAuB,EAAEC,4BAAmB;IAC5C,kBAAkB,EAAEC,wBAAe;IACnC,mBAAmB,EAAEC,yBAAgB;IACrC,YAAY,EAAEC,kBAAS;IACvB,kBAAkB,EAAEC,wBAAe;IACnC,2BAA2B,EAAEC,gCAAuB;IACpD,eAAe,EAAEC,oBAAW;IAC5B,6BAA6B,EAAEC,iCAAwB;IACvD,aAAa,EAAEC,mBAAU;IACzB,mBAAmB,EAAEC,wBAAe;IACpC,oBAAoB,EAAEC,yBAAgB;IACtC,sBAAsB,EAAEC,2BAAkB;IAC1C,UAAU,EAAEC,gBAAO;IACnB,oBAAoB,EAAEC,yBAAgB;IACtC,yBAAyB,EAAEC,8BAAqB;IAChD,qBAAqB,EAAEC,2BAAkB;IACzC,uCAAuC,EAAEC,2CAAkC;IAC3E,iBAAiB,EAAEC,uBAAc;IACjC,uBAAuB,EAAEC,4BAAmB;IAC5C,yCAAyC,EAAEC,4CAAmC;IAC9E,eAAe,EAAEC,qBAAY;IAC7B,eAAe,EAAEC,qBAAY;IAC7B,2BAA2B,EAAEC,gCAAuB;IACpD,oBAAoB,EAAEC,yBAAgB;IACtC,oBAAoB,EAAEC,yBAAgB;IACtC,kBAAkB,EAAEC,wBAAe;IACnC,8BAA8B,EAAEC,mCAA0B;IAC1D,uBAAuB,EAAEC,4BAAmB;IAC5C,uBAAuB,EAAEC,4BAAmB;IAC5C,iBAAiB,EAAEC,uBAAc;IACjC,uBAAuB,EAAEC,4BAAmB;IAC5C,6BAA6B,EAAEC,kCAAyB;IACxD,sBAAsB,EAAEC,2BAAkB;IAC1C,gBAAgB,EAAEC,sBAAa;IAC/B,gBAAgB,EAAEC,sBAAa;IAC/B,sBAAsB,EAAEC,2BAAkB;IAC1C,WAAW,EAAEC,iBAAQ;IACrB,WAAW,EAAEC,iBAAQ;IACrB,eAAe,EAAEC,qBAAY;IAC7B,aAAa,EAAEC;EACjB;AACF,CAAC;AAED,MAAMC,wBAAwB,GAAIC,WAAW,IAAK;EAChD,OAAO;IACLC,OAAO,EAAE,CACP,OAAO,CACR;IACDvD,KAAK,EAAE;MACL,oBAAoB,EAAEsD,WAAW;MACjC,uBAAuB,EAAEA,WAAW;MACpC,sBAAsB,EAAE,KAAK;MAC7B,yBAAyB,EAAE,KAAK;MAChC,4BAA4B,EAAE,KAAK;MACnC,yBAAyB,EAAEA,WAAW;MACtC,4BAA4B,EAAEA,WAAW;MACzC,oBAAoB,EAAE,KAAK;MAC3B,uBAAuB,EAAEA,WAAW;MACpC,mBAAmB,EAAEA,WAAW;MAChC,oBAAoB,EAAEA,WAAW;MACjC,kBAAkB,EAAEA,WAAW;MAC/B,6BAA6B,EAAEA,WAAW;MAC1C,wBAAwB,EAAE,KAAK;MAC/B,yBAAyB,EAAE,KAAK;MAChC,kBAAkB,EAAE,KAAK;MACzB,wBAAwB,EAAEA,WAAW;MACrC,iCAAiC,EAAEA,WAAW;MAC9C,qBAAqB,EAAE,KAAK;MAC5B,mCAAmC,EAAE,KAAK;MAC1C,mBAAmB,EAAE,KAAK;MAC1B,yBAAyB,EAAE,KAAK;MAChC,0BAA0B,EAAEA,WAAW;MACvC,4BAA4B,EAAE,KAAK;MACnC,gBAAgB,EAAE,KAAK;MACvB,0BAA0B,EAAEA,WAAW;MACvC,+BAA+B,EAAE,KAAK;MACtC,2BAA2B,EAAE,KAAK;MAClC,6CAA6C,EAAE,KAAK;MACpD,uBAAuB,EAAE,KAAK;MAC9B,6BAA6B,EAAE,KAAK;MACpC,+CAA+C,EAAE,KAAK;MACtD,qBAAqB,EAAEA,WAAW;MAClC,qBAAqB,EAAEA,WAAW;MAClC,iCAAiC,EAAEA,WAAW;MAC9C,0BAA0B,EAAEA,WAAW;MACvC,0BAA0B,EAAEA,WAAW;MACvC,wBAAwB,EAAEA,WAAW;MACrC,oCAAoC,EAAEA,WAAW;MACjD,6BAA6B,EAAEA,WAAW;MAC1C,6BAA6B,EAAEA,WAAW;MAC1C,uBAAuB,EAAEA,WAAW;MACpC,6BAA6B,EAAEA,WAAW;MAC1C,mCAAmC,EAAEA,WAAW;MAChD,4BAA4B,EAAEA,WAAW;MACzC,sBAAsB,EAAE,KAAK;MAC7B,sBAAsB,EAAEA,WAAW;MACnC,4BAA4B,EAAEA,WAAW;MACzC,iBAAiB,EAAE,KAAK;MACxB,iBAAiB,EAAEA,WAAW;MAC9B,qBAAqB,EAAE,KAAK;MAC5B,mBAAmB,EAAEA;IACvB;EACF,CAAC;AACH,CAAC;AAED,MAAME,kCAAkC,GAAIF,WAAW,IAAK;EAC1D,MAAMG,OAAO,GAAGJ,wBAAwB,CAACC,WAAW,CAAC;EAErD,OAAO;IACL,GAAGG,OAAO;IACVzD,KAAK,EAAE;MACL,GAAGyD,OAAO,CAACzD,KAAK;MAChB;MACE,uBAAuB,EAAE,CACvBsD,WAAW,EAAE;QACXI,KAAK,EAAE;MACT,CAAC,CACF;MACD,gBAAgB,EAAEJ,WAAW;MAC7B,0BAA0B,EAAE,KAAK;MACjC,6BAA6B,EAAE,KAAK;MACpC,4BAA4B,EAAE;MAChC;IACF;EACF,CAAC;AACH,CAAC;;AAEDxD,KAAK,CAACC,OAAO,CAAC4D,WAAW,GAAGN,wBAAwB,CAAC,MAAM,CAAC;AAC5DvD,KAAK,CAACC,OAAO,CAAC,mBAAmB,CAAC,GAAGsD,wBAAwB,CAAC,OAAO,CAAC;AACtEvD,KAAK,CAACC,OAAO,CAAC,wBAAwB,CAAC,GAAGyD,kCAAkC,CAAC,MAAM,CAAC;AACpF1D,KAAK,CAACC,OAAO,CAAC,8BAA8B,CAAC,GAAGyD,kCAAkC,CAAC,OAAO,CAAC;AAAC,IAAAI,QAAA,GAE7E9D,KAAK;AAAA+D,OAAA,CAAAhE,OAAA,GAAA+D,QAAA;AAAAE,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAhE,OAAA"}
@@ -57,6 +57,9 @@ const adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parent
57
57
  node.value = typeNodeName;
58
58
  }
59
59
  };
60
+ const getMessage = upperCase => {
61
+ return 'Use object shorthand or index signatures instead of ' + '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';
62
+ };
60
63
  var _default = (0, _iterateJsdoc.default)(({
61
64
  jsdocNode,
62
65
  sourceCode,
@@ -74,13 +77,28 @@ var _default = (0, _iterateJsdoc.default)(({
74
77
  mode
75
78
  } = settings;
76
79
  const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal || 'object' in preferredTypesOriginal || 'object.<>' in preferredTypesOriginal || 'Object.<>' in preferredTypesOriginal || 'object<>' in preferredTypesOriginal);
80
+ const info = {
81
+ message: getMessage(),
82
+ replacement: false
83
+ };
84
+ const infoUC = {
85
+ message: getMessage(true),
86
+ replacement: false
87
+ };
88
+ const typeToInject = mode === 'typescript' ? {
89
+ Object: 'object',
90
+ 'object.<>': info,
91
+ 'Object.<>': infoUC,
92
+ 'object<>': info,
93
+ 'Object<>': infoUC
94
+ } : {
95
+ Object: 'object',
96
+ 'object.<>': 'Object<>',
97
+ 'Object.<>': 'Object<>',
98
+ 'object<>': 'Object<>'
99
+ };
77
100
  const preferredTypes = {
78
- ...(injectObjectPreferredTypes ? {
79
- Object: 'object',
80
- 'object.<>': 'Object<>',
81
- 'Object.<>': 'Object<>',
82
- 'object<>': 'Object<>'
83
- } : {}),
101
+ ...(injectObjectPreferredTypes ? typeToInject : {}),
84
102
  ...preferredTypesOriginal
85
103
  };
86
104
  const {
@@ -257,7 +275,7 @@ var _default = (0, _iterateJsdoc.default)(({
257
275
  const fix = fixer => {
258
276
  return fixer.replaceText(jsdocNode, sourceCode.getText(jsdocNode).replace(`{${jsdocTag.type}}`, `{${fixedType}}`));
259
277
  };
260
- for (const [badType, preferredType = '', message] of invalidTypes) {
278
+ for (const [badType, preferredType = '', msg] of invalidTypes) {
261
279
  const tagValue = jsdocTag.name ? ` "${jsdocTag.name}"` : '';
262
280
  if (exemptTagContexts.some(({
263
281
  tag,
@@ -267,7 +285,7 @@ var _default = (0, _iterateJsdoc.default)(({
267
285
  })) {
268
286
  continue;
269
287
  }
270
- report(message || `Invalid JSDoc @${tagName}${tagValue} type "${badType}"` + (preferredType ? '; ' : '.') + (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''), preferredType ? fix : null, jsdocTag, message ? {
288
+ report(msg || `Invalid JSDoc @${tagName}${tagValue} type "${badType}"` + (preferredType ? '; ' : '.') + (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''), preferredType ? fix : null, jsdocTag, msg ? {
271
289
  tagName,
272
290
  tagValue
273
291
  } : null);
@@ -1 +1 @@
1
- {"version":3,"file":"checkTypes.js","names":["_jsdoccomment","require","_iterateJsdoc","_interopRequireDefault","obj","__esModule","default","strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","_parentNode$meta","bracketEnd","endsWith","value","replace","_default","iterateJsdoc","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","_parentNode$meta2","_parentNode$meta3","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","_parentNode$elements","_parentNode$left","_parentNode$left2","elements","left","toLowerCase","push","getInvalidTypes","tagName","nameInTag","idx","types","preferredSetting","nextItem","skipRootChecking","name","startsWith","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","tagValue","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf","exports","module"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n *\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property && parentNode.type === 'JsdocTypeGeneric') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\n parentNode?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n tag: tagName,\n name: nameInTag,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n message,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAMA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,iBAAiB,GAAG,CACxB,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,QAAQ,CACT;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAGA,CAACC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,YAAY,EAAEC,IAAI,EAAEC,UAAU,KAAK;EACvF,IAAIC,GAAG,GAAGL,SAAS;EACnB,IAAIC,cAAc,EAAE;IAClB,IAAID,SAAS,KAAK,IAAI,EAAE;MACtBI,UAAU,CAACE,IAAI,CAACC,QAAQ,GAAG,QAAQ;MACnCH,UAAU,CAACE,IAAI,CAACE,GAAG,GAAG,KAAK;MAC3BH,GAAG,GAAG,OAAO;IACf,CAAC,MAAM;MACL,MAAMI,aAAa,GAAGT,SAAS,CAACU,KAAK,CAAC,aAAa,CAAC;MACpD,IAAID,aAAa,EAAE;QACjBL,UAAU,CAACE,IAAI,CAACC,QAAQ,GAAG,OAAO;QAClCH,UAAU,CAACE,IAAI,CAACE,GAAG,GAAG,IAAI;QAC1BH,GAAG,GAAGL,SAAS,CAACW,KAAK,CAAC,CAAC,EAAE,CAACF,aAAa,CAAC,CAAC,CAAC,CAACG,MAAM,CAAC;MACpD,CAAC,MAAM;QAAA,IAAAC,gBAAA;QACL,MAAMC,UAAU,GAAGd,SAAS,CAACe,QAAQ,CAAC,IAAI,CAAC;QAC3C,IAAID,UAAU,EAAE;UACdV,UAAU,CAACE,IAAI,CAACC,QAAQ,GAAG,OAAO;UAClCH,UAAU,CAACE,IAAI,CAACE,GAAG,GAAG,KAAK;UAC3BH,GAAG,GAAGL,SAAS,CAACW,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,MAAM,IACL,EAAAE,gBAAA,GAAAT,UAAU,CAACE,IAAI,cAAAO,gBAAA,uBAAfA,gBAAA,CAAiBN,QAAQ,MAAK,QAAQ,KACrCL,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAK,OAAO,CAAC,EACnD;UACAE,UAAU,CAACE,IAAI,CAACC,QAAQ,GAAG,OAAO;UAClCH,UAAU,CAACE,IAAI,CAACE,GAAG,GAAG,KAAK;QAC7B;MACF;IACF;EACF,CAAC,MAAM,IAAIT,IAAI,KAAK,cAAc,EAAE;IAClCI,IAAI,CAACJ,IAAI,GAAG,eAAe;EAC7B;EAEAI,IAAI,CAACa,KAAK,GAAGX,GAAG,CAACY,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;;EAErD;EACA,IAAI,CAACZ,GAAG,EAAE;IACRF,IAAI,CAACa,KAAK,GAAGd,YAAY;EAC3B;AACF,CAAC;AAAC,IAAAgB,QAAA,GAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,SAAS;EACTC,UAAU;EACVC,MAAM;EACNC,KAAK;EACLC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ,MAAMC,yBAAyB,GAAGH,KAAK,CAACI,UAAU,CAAEC,GAAG,IAAK;IAC1D,OAAOL,KAAK,CAACM,wBAAwB,CAACD,GAAG,CAACA,GAAG,CAAC;EAChD,CAAC,CAAC;EAEF,MAAM;IACJE,cAAc,EAAEC,sBAAsB;IACtCC,cAAc;IACdC;EACF,CAAC,GAAGT,QAAQ;EAEZ,MAAMU,0BAA0B,GAAG,EAAE,QAAQ,IAAIH,sBAAsB,IACrE,QAAQ,IAAIA,sBAAsB,IAClC,WAAW,IAAIA,sBAAsB,IACrC,WAAW,IAAIA,sBAAsB,IACrC,UAAU,IAAIA,sBAAsB,CAAC;EAEvC,MAAMD,cAAc,GAAG;IACrB,IAAGI,0BAA0B,GAAG;MAC9BC,MAAM,EAAE,QAAQ;MAChB,WAAW,EAAE,UAAU;MACvB,WAAW,EAAE,UAAU;MACvB,UAAU,EAAE;IACd,CAAC,GAAG,CAAC,CAAC;IACN,GAAGJ;EACL,CAAC;EAED,MAAM;IACJK,UAAU;IACVC,6BAA6B;IAC7BC,iBAAiB,GAAG;EACtB,CAAC,GAAGb,OAAO,CAACc,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;EAE5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,oBAAoB,GAAGA,CAACC,KAAK,EAAEvC,YAAY,EAAEE,UAAU,EAAEsC,QAAQ,KAAK;IAC1E,IAAIC,wBAAwB,GAAG,KAAK;IACpC,IAAI1C,cAAc,GAAG,KAAK;IAC1B,IAAI2C,QAAQ,GAAG1C,YAAY;IAE3B,MAAM2C,eAAe,GAAGzC,UAAU,KAAK0C,SAAS,IAAI1C,UAAU,CAACL,IAAI,KAAK,kBAAkB,IAAI2C,QAAQ,KAAK,MAAM;IACjH,IAAIL,6BAA6B,IAAIQ,eAAe,EAAE;MAAA,IAAAE,iBAAA,EAAAC,iBAAA;MACpD,MAAMzC,QAAQ,GAAGH,UAAU,aAAVA,UAAU,wBAAA2C,iBAAA,GAAV3C,UAAU,CAAEE,IAAI,cAAAyC,iBAAA,uBAAhBA,iBAAA,CAAkBxC,QAAQ;MAC3C,MAAMC,GAAG,GAAGJ,UAAU,aAAVA,UAAU,wBAAA4C,iBAAA,GAAV5C,UAAU,CAAEE,IAAI,cAAA0C,iBAAA,uBAAhBA,iBAAA,CAAkBxC,GAAG;MAEjC,IAAID,QAAQ,KAAK,OAAO,EAAE;QACxB,MAAM0C,cAAc,GAAGzC,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACF,IAAI,CACL;QACDP,cAAc,GAAGgD,cAAc,CAACC,IAAI,CAAEC,YAAY,IAAK;UACrD,IAAI,CAAArB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG5B,YAAY,GAAGiD,YAAY,CAAC,MAAKL,SAAS,EAAE;YAC/DF,QAAQ,IAAIO,YAAY;YAExB,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd,CAAC,CAAC;MACJ;MAEA,IAAI,CAAClD,cAAc,IAAIyC,QAAQ,IAAItC,UAAU,CAACL,IAAI,KAAK,kBAAkB,EAAE;QACzE,MAAMkD,cAAc,GAAGzC,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACFD,QAAQ,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CACnC;QAEDN,cAAc,GAAGgD,cAAc,CAACC,IAAI,CAAEC,YAAY,IAAK;UACrD,IAAI,CAAArB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAGqB,YAAY,CAAC,MAAKL,SAAS,EAAE;YAChDF,QAAQ,GAAGO,YAAY;YAEvB,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd,CAAC,CAAC;MACJ;IACF;IAEA,MAAMC,eAAe,GAAG,CAAAtB,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG5B,YAAY,CAAC,MAAK4C,SAAS,IAClE,CAACX,MAAM,CAACkB,MAAM,CAACvB,cAAc,CAAC,CAACwB,QAAQ,CAACpD,YAAY,CAAC;IACvD,MAAMqD,wBAAwB,GAAGb,QAAQ,IAAIU,eAAe,IAAIf,6BAA6B;IAC7FpC,cAAc,GAAGA,cAAc,IAAIsD,wBAAwB;IAE3DZ,wBAAwB,GAAG1C,cAAc,IACvCmD,eAAe,IAAI,CAACV,QAAQ;IAE9B,OAAO,CACLC,wBAAwB,EAAEC,QAAQ,EAAE3C,cAAc,CACnD;EACH,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMuD,gBAAgB,GAAGA,CAACtD,YAAY,EAAEF,SAAS,EAAEI,UAAU,EAAEqD,YAAY,KAAK;IAC9E,IAAIC,gBAAgB,GAAG1D,SAAS;IAChC,KAAK,MAAM2D,gBAAgB,IAAI9D,iBAAiB,EAAE;MAAA,IAAA+D,oBAAA,EAAAC,gBAAA,EAAAC,iBAAA;MAChD,IACEH,gBAAgB,KAAK,QAAQ;MAE3B;MACA;MACA,EAAC7B,cAAc,aAAdA,cAAc,eAAdA,cAAc,CAAG5B,YAAY,CAAC;MAC/B;MACA;MACA;MACA;MACAE,UAAU,aAAVA,UAAU,gBAAAwD,oBAAA,GAAVxD,UAAU,CAAE2D,QAAQ,cAAAH,oBAAA,eAApBA,oBAAA,CAAsBhD,MAAM,IAC1B,CAAAR,UAAU,aAAVA,UAAU,wBAAAyD,gBAAA,GAAVzD,UAAU,CAAE4D,IAAI,cAAAH,gBAAA,uBAAhBA,gBAAA,CAAkB9D,IAAI,MAAK,eAAe,IAC1C,CAAAK,UAAU,aAAVA,UAAU,wBAAA0D,iBAAA,GAAV1D,UAAU,CAAE4D,IAAI,cAAAF,iBAAA,uBAAhBA,iBAAA,CAAkB9C,KAAK,MAAK,QAC7B,CACF,EACD;QACA;MACF;MAEA,IAAI2C,gBAAgB,KAAKzD,YAAY,IACnCyD,gBAAgB,CAACM,WAAW,EAAE,KAAK/D,YAAY,CAAC+D,WAAW,EAAE;MAE7D;MACC,CAACnC,cAAc,IAAI,CAAAA,cAAc,aAAdA,cAAc,uBAAdA,cAAc,CAAG6B,gBAAgB,CAAC,MAAKb,SAAS,CAAC,EACrE;QACAY,gBAAgB,GAAGC,gBAAgB;QACnCF,YAAY,CAACS,IAAI,CAAC,CAChBhE,YAAY,EAAEwD,gBAAgB,CAC/B,CAAC;QACF;MACF;IACF;IAEA,OAAOA,gBAAgB;EACzB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMS,eAAe,GAAGA,CAACpE,IAAI,EAAEiB,KAAK,EAAEoD,OAAO,EAAEC,SAAS,EAAEC,GAAG,EAAE5B,QAAQ,EAAEvC,IAAI,EAAEC,UAAU,EAAEqD,YAAY,KAAK;IAC1G,IAAIvD,YAAY,GAAGH,IAAI,KAAK,cAAc,GAAG,GAAG,GAAGiB,KAAK;IAExD,MAAM,CACJ2B,wBAAwB,EACxBC,QAAQ,EACR3C,cAAc,CACf,GAAGuC,oBAAoB,CAACzC,IAAI,EAAEG,YAAY,EAAEE,UAAU,EAAEsC,QAAQ,CAAC;IAElE,IAAI1C,SAAS;IACb,IAAIuE,KAAK;IACT,IAAI5B,wBAAwB,EAAE;MAC5B,MAAM6B,gBAAgB,GAAG1C,cAAc,CAACc,QAAQ,CAAC;MACjD1C,YAAY,GAAG0C,QAAQ,KAAK,IAAI,GAAGA,QAAQ,GAAG1C,YAAY;MAE1D,IAAI,CAACsE,gBAAgB,EAAE;QACrBf,YAAY,CAACS,IAAI,CAAC,CAChBhE,YAAY,CACb,CAAC;MACJ,CAAC,MAAM,IAAI,OAAOsE,gBAAgB,KAAK,QAAQ,EAAE;QAC/CxE,SAAS,GAAGwE,gBAAgB;QAC5Bf,YAAY,CAACS,IAAI,CAAC,CAChBhE,YAAY,EAAEF,SAAS,CACxB,CAAC;MACJ,CAAC,MAAM,IAAIwE,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,QAAQ,EAAE;QACnE,MAAMC,QAAQ,GAAGD,gBAAgB,CAACE,gBAAgB,IAAIhD,yBAAyB,CAAC4C,GAAG,GAAG,CAAC,CAAC;QAExF,IAAI,CAACG,QAAQ,IAAI,CAACA,QAAQ,CAACE,IAAI,CAACC,UAAU,CAAE,GAAEP,SAAU,GAAE,CAAC,EAAE;UAC3DrE,SAAS,GAAGwE,gBAAgB,CAACK,WAAW;UACxCpB,YAAY,CAACS,IAAI,CAAC,CAChBhE,YAAY,EACZF,SAAS,EACTwE,gBAAgB,CAACM,OAAO,CACzB,CAAC;QACJ;MACF,CAAC,MAAM;QACLvD,KAAK,CAACwD,cAAc,CAClB,wFAAwF,CACzF;QAED;MACF;IACF,CAAC,MAAM,IAAI5C,MAAM,CAAC6C,OAAO,CAAChD,cAAc,CAAC,CAACkB,IAAI,CAAC,CAAC,CAC9CtB,GAAG,EACH;MACE7B,IAAI,EAAEkF;IACR,CAAC,CACF,KAAK;MACJV,KAAK,GAAGU,IAAI;MAEZ,OAAOrD,GAAG,KAAKwC,OAAO,IACpBc,KAAK,CAACC,OAAO,CAACZ,KAAK,CAAC,IACpB,CAACA,KAAK,CAACjB,QAAQ,CAACpD,YAAY,CAAC;IACjC,CAAC,CAAC,EAAE;MACFuD,YAAY,CAACS,IAAI,CAAC,CAChBhE,YAAY,EAAEqE,KAAK,CACpB,CAAC;IACJ,CAAC,MAAM,IAAI,CAACnC,UAAU,IAAIrC,IAAI,KAAK,eAAe,EAAE;MAClDC,SAAS,GAAGwD,gBAAgB,CAACtD,YAAY,EAAEF,SAAS,EAAEI,UAAU,EAAEqD,YAAY,CAAC;IACjF;;IAEA;IACA,IAAIzD,SAAS,EAAE;MACbF,WAAW,CAACC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,YAAY,EAAEC,IAAI,EAAEC,UAAU,CAAC;IAC9E;EACF,CAAC;EAED,KAAK,MAAM,CACTkE,GAAG,EACHc,QAAQ,CACT,IAAI1D,yBAAyB,CAACsD,OAAO,EAAE,EAAE;IACxC,MAAMvB,YAAY,GAAG,EAAE;IACvB,IAAI4B,OAAO;IAEX,IAAI;MACFA,OAAO,GAAGpD,IAAI,KAAK,YAAY,GAAG,IAAAqD,sBAAQ,EAACF,QAAQ,CAACrF,IAAI,CAAC,GAAG,IAAAwF,mBAAK,EAACH,QAAQ,CAACrF,IAAI,EAAEkC,IAAI,CAAC;IACxF,CAAC,CAAC,MAAM;MACN;IACF;IAEA,MAAM;MACJL,GAAG,EAAEwC,OAAO;MACZO,IAAI,EAAEN;IACR,CAAC,GAAGe,QAAQ;IAEZ,IAAAI,sBAAQ,EAACH,OAAO,EAAE,CAAClF,IAAI,EAAEC,UAAU,EAAEsC,QAAQ,KAAK;MAChD,MAAM;QACJ3C,IAAI;QACJiB;MACF,CAAC,GAAGb,IAAI;MACR,IAAI,CAAC,CACH,eAAe,EAAE,cAAc,CAChC,CAACmD,QAAQ,CAACvD,IAAI,CAAC,EAAE;QAChB;MACF;MAEAoE,eAAe,CAACpE,IAAI,EAAEiB,KAAK,EAAEoD,OAAO,EAAEC,SAAS,EAAEC,GAAG,EAAE5B,QAAQ,EAAEvC,IAAI,EAAEC,UAAU,EAAEqD,YAAY,CAAC;IACjG,CAAC,CAAC;IAEF,IAAIA,YAAY,CAAC7C,MAAM,EAAE;MACvB,MAAM6E,SAAS,GAAG,IAAAC,uBAAS,EAACL,OAAO,CAAC;;MAEpC;AACN;AACA;AACA;MACM,MAAMM,GAAG,GAAIC,KAAK,IAAK;QACrB,OAAOA,KAAK,CAACC,WAAW,CACtBzE,SAAS,EACTC,UAAU,CAACyE,OAAO,CAAC1E,SAAS,CAAC,CAACH,OAAO,CAClC,IAAGmE,QAAQ,CAACrF,IAAK,GAAE,EACnB,IAAG0F,SAAU,GAAE,CACjB,CACF;MACH,CAAC;MAED,KAAK,MAAM,CACTM,OAAO,EACPC,aAAa,GAAG,EAAE,EAClBlB,OAAO,CACR,IAAIrB,YAAY,EAAE;QACjB,MAAMwC,QAAQ,GAAGb,QAAQ,CAACT,IAAI,GAAI,KAAIS,QAAQ,CAACT,IAAK,GAAE,GAAG,EAAE;QAC3D,IAAIrC,iBAAiB,CAACY,IAAI,CAAC,CAAC;UAC1BtB,GAAG;UACH2C;QACF,CAAC,KAAK;UACJ,OAAO3C,GAAG,KAAKwC,OAAO,KACnBG,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACjB,QAAQ,CAAC8B,QAAQ,CAACrF,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,EAAE;UACF;QACF;QAEAuB,MAAM,CACJwD,OAAO,IACJ,kBAAiBV,OAAQ,GAAE6B,QAAS,UAASF,OAAQ,GAAE,IACvDC,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC,IAC3BA,aAAa,GAAI,WAAUE,IAAI,CAACR,SAAS,CAACM,aAAa,CAAE,GAAE,GAAG,EAAE,CAAC,EACpEA,aAAa,GAAGL,GAAG,GAAG,IAAI,EAC1BP,QAAQ,EACRN,OAAO,GAAG;UACRV,OAAO;UACP6B;QACF,CAAC,GAAG,IAAI,CACT;MACH;IACF;EACF;AACF,CAAC,EAAE;EACDE,gBAAgB,EAAE,IAAI;EACtB7F,IAAI,EAAE;IACJ8F,IAAI,EAAE;MACJC,WAAW,EAAE,wBAAwB;MACrCC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVpE,iBAAiB,EAAE;UACjBqE,KAAK,EAAE;YACLF,oBAAoB,EAAE,KAAK;YAC3BC,UAAU,EAAE;cACV9E,GAAG,EAAE;gBACH7B,IAAI,EAAE;cACR,CAAC;cACDwE,KAAK,EAAE;gBACLqC,KAAK,EAAE,CACL;kBACE7G,IAAI,EAAE;gBACR,CAAC,EACD;kBACE4G,KAAK,EAAE;oBACL5G,IAAI,EAAE;kBACR,CAAC;kBACDA,IAAI,EAAE;gBACR,CAAC;cAEL;YACF,CAAC;YACDA,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDqC,UAAU,EAAE;UACVrC,IAAI,EAAE;QACR,CAAC;QACDsC,6BAA6B,EAAE;UAC7BtC,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA8G,OAAA,CAAAjH,OAAA,GAAAsB,QAAA;AAAA4F,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAjH,OAAA"}
1
+ {"version":3,"file":"checkTypes.js","names":["_jsdoccomment","require","_iterateJsdoc","_interopRequireDefault","obj","__esModule","default","strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","_parentNode$meta","bracketEnd","endsWith","value","replace","getMessage","upperCase","_default","iterateJsdoc","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","info","message","replacement","infoUC","typeToInject","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","_parentNode$meta2","_parentNode$meta3","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","_parentNode$elements","_parentNode$left","_parentNode$left2","elements","left","toLowerCase","push","getInvalidTypes","tagName","nameInTag","idx","types","preferredSetting","nextItem","skipRootChecking","name","startsWith","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","msg","tagValue","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf","exports","module"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n *\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nconst getMessage = (upperCase) => {\n return 'Use object shorthand or index signatures instead of ' +\n '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n const info = {\n message: getMessage(),\n replacement: false,\n };\n\n const infoUC = {\n message: getMessage(true),\n replacement: false,\n };\n\n const typeToInject = mode === 'typescript' ?\n {\n Object: 'object',\n 'object.<>': info,\n 'Object.<>': infoUC,\n 'object<>': info,\n 'Object<>': infoUC,\n } :\n {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n };\n\n const preferredTypes = {\n ...injectObjectPreferredTypes ?\n typeToInject :\n {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = parentNode?.meta?.brackets;\n const dot = parentNode?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (!isGenericMatch && property && parentNode.type === 'JsdocTypeGeneric') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\n parentNode?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n tag: tagName,\n name: nameInTag,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n msg,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n msg ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n msg ? {\n tagName,\n tagValue,\n } : null,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _areDocsInformative = require("are-docs-informative");
8
+ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ const defaultAliases = {
11
+ a: ['an', 'our']
12
+ };
13
+ const defaultUselessWords = ['a', 'an', 'i', 'in', 'of', 's', 'the'];
14
+
15
+ // eslint-disable-next-line complexity
16
+ const getNamesFromNode = node => {
17
+ switch (node === null || node === void 0 ? void 0 : node.type) {
18
+ case 'AccessorProperty':
19
+ case 'MethodDefinition':
20
+ case 'PropertyDefinition':
21
+ case 'TSAbstractAccessorProperty':
22
+ case 'TSAbstractMethodDefinition':
23
+ case 'TSAbstractPropertyDefinition':
24
+ return [...getNamesFromNode(node.parent.parent), ...getNamesFromNode(node.key)];
25
+ case 'ClassDeclaration':
26
+ case 'ClassExpression':
27
+ case 'FunctionDeclaration':
28
+ case 'FunctionExpression':
29
+ case 'TSModuleDeclaration':
30
+ case 'TSMethodSignature':
31
+ case 'TSDeclareFunction':
32
+ case 'TSEnumDeclaration':
33
+ case 'TSEnumMember':
34
+ case 'TSInterfaceDeclaration':
35
+ case 'TSTypeAliasDeclaration':
36
+ return getNamesFromNode(node.id);
37
+ case 'Identifier':
38
+ return [node.name];
39
+ case 'Property':
40
+ return getNamesFromNode(node.key);
41
+ case 'VariableDeclaration':
42
+ return getNamesFromNode(node.declarations[0]);
43
+ case 'VariableDeclarator':
44
+ return [...getNamesFromNode(node.id), ...getNamesFromNode(node.init)].filter(Boolean);
45
+ default:
46
+ return [];
47
+ }
48
+ };
49
+ var _default = (0, _iterateJsdoc.default)(({
50
+ context,
51
+ jsdoc,
52
+ node,
53
+ report,
54
+ utils
55
+ }) => {
56
+ const {
57
+ aliases = defaultAliases,
58
+ uselessWords = defaultUselessWords
59
+ } = context.options[0] || {};
60
+ const nodeNames = getNamesFromNode(node);
61
+ const descriptionIsRedundant = (text, extraName = '') => {
62
+ return Boolean(text) && !(0, _areDocsInformative.areDocsInformative)(text, [extraName, nodeNames].filter(Boolean).join(' '), {
63
+ aliases,
64
+ uselessWords
65
+ });
66
+ };
67
+ const {
68
+ description,
69
+ lastDescriptionLine
70
+ } = utils.getDescription();
71
+ let descriptionReported = false;
72
+ for (const tag of jsdoc.tags) {
73
+ if (descriptionIsRedundant(tag.description, tag.name)) {
74
+ utils.reportJSDoc('This tag description only repeats the name it describes.', tag);
75
+ }
76
+ descriptionReported || (descriptionReported = tag.description === description && tag.line === lastDescriptionLine);
77
+ }
78
+ if (!descriptionReported && descriptionIsRedundant(description)) {
79
+ report('This description only repeats the name it describes.');
80
+ }
81
+ }, {
82
+ iterateAllJsdocs: true,
83
+ meta: {
84
+ docs: {
85
+ description: 'This rule reports doc comments that only restate their attached name.',
86
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc#informative-docs'
87
+ },
88
+ schema: [{
89
+ additionalProperties: false,
90
+ properties: {
91
+ aliases: {
92
+ items: {
93
+ type: 'string'
94
+ },
95
+ type: 'array'
96
+ },
97
+ uselessWords: {
98
+ items: {
99
+ type: 'string'
100
+ },
101
+ type: 'array'
102
+ }
103
+ },
104
+ type: 'object'
105
+ }],
106
+ type: 'suggestion'
107
+ }
108
+ });
109
+ exports.default = _default;
110
+ module.exports = exports.default;
111
+ //# sourceMappingURL=informativeDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"informativeDocs.js","names":["_areDocsInformative","require","_iterateJsdoc","_interopRequireDefault","obj","__esModule","default","defaultAliases","a","defaultUselessWords","getNamesFromNode","node","type","parent","key","id","name","declarations","init","filter","Boolean","_default","iterateJsdoc","context","jsdoc","report","utils","aliases","uselessWords","options","nodeNames","descriptionIsRedundant","text","extraName","areDocsInformative","join","description","lastDescriptionLine","getDescription","descriptionReported","tag","tags","reportJSDoc","line","iterateAllJsdocs","meta","docs","url","schema","additionalProperties","properties","items","exports","module"],"sources":["../../src/rules/informativeDocs.js"],"sourcesContent":["import {\n areDocsInformative,\n} from 'are-docs-informative';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst defaultAliases = {\n a: [\n 'an', 'our',\n ],\n};\n\nconst defaultUselessWords = [\n 'a', 'an', 'i', 'in', 'of', 's', 'the',\n];\n\n// eslint-disable-next-line complexity\nconst getNamesFromNode = (node) => {\n switch (node?.type) {\n case 'AccessorProperty':\n case 'MethodDefinition':\n case 'PropertyDefinition':\n case 'TSAbstractAccessorProperty':\n case 'TSAbstractMethodDefinition':\n case 'TSAbstractPropertyDefinition':\n return [\n ...getNamesFromNode(node.parent.parent),\n ...getNamesFromNode(node.key),\n ];\n case 'ClassDeclaration':\n case 'ClassExpression':\n case 'FunctionDeclaration':\n case 'FunctionExpression':\n case 'TSModuleDeclaration':\n case 'TSMethodSignature':\n case 'TSDeclareFunction':\n case 'TSEnumDeclaration':\n case 'TSEnumMember':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n return getNamesFromNode(node.id);\n case 'Identifier':\n return [\n node.name,\n ];\n case 'Property':\n return getNamesFromNode(node.key);\n case 'VariableDeclaration':\n return getNamesFromNode(node.declarations[0]);\n case 'VariableDeclarator':\n return [\n ...getNamesFromNode(node.id),\n ...getNamesFromNode(node.init),\n ].filter(Boolean);\n default:\n return [];\n }\n};\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n node,\n report,\n utils,\n}) => {\n const {\n aliases = defaultAliases,\n uselessWords = defaultUselessWords,\n } = context.options[0] || {};\n const nodeNames = getNamesFromNode(node);\n\n const descriptionIsRedundant = (text, extraName = '') => {\n return Boolean(text) && !areDocsInformative(text, [\n extraName, nodeNames,\n ].filter(Boolean).join(' '), {\n aliases,\n uselessWords,\n });\n };\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n let descriptionReported = false;\n\n for (const tag of jsdoc.tags) {\n if (descriptionIsRedundant(tag.description, tag.name)) {\n utils.reportJSDoc(\n 'This tag description only repeats the name it describes.',\n tag,\n );\n }\n\n descriptionReported ||= tag.description === description && tag.line === lastDescriptionLine;\n }\n\n if (!descriptionReported && descriptionIsRedundant(description)) {\n report('This description only repeats the name it describes.');\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description:\n 'This rule reports doc comments that only restate their attached name.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#informative-docs',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n aliases: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n uselessWords: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,mBAAA,GAAAC,OAAA;AAGA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,cAAc,GAAG;EACrBC,CAAC,EAAE,CACD,IAAI,EAAE,KAAK;AAEf,CAAC;AAED,MAAMC,mBAAmB,GAAG,CAC1B,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CACvC;;AAED;AACA,MAAMC,gBAAgB,GAAIC,IAAI,IAAK;EACjC,QAAQA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEC,IAAI;IAClB,KAAK,kBAAkB;IACvB,KAAK,kBAAkB;IACvB,KAAK,oBAAoB;IACzB,KAAK,4BAA4B;IACjC,KAAK,4BAA4B;IACjC,KAAK,8BAA8B;MACjC,OAAO,CACL,GAAGF,gBAAgB,CAACC,IAAI,CAACE,MAAM,CAACA,MAAM,CAAC,EACvC,GAAGH,gBAAgB,CAACC,IAAI,CAACG,GAAG,CAAC,CAC9B;IACH,KAAK,kBAAkB;IACvB,KAAK,iBAAiB;IACtB,KAAK,qBAAqB;IAC1B,KAAK,oBAAoB;IACzB,KAAK,qBAAqB;IAC1B,KAAK,mBAAmB;IACxB,KAAK,mBAAmB;IACxB,KAAK,mBAAmB;IACxB,KAAK,cAAc;IACnB,KAAK,wBAAwB;IAC7B,KAAK,wBAAwB;MAC3B,OAAOJ,gBAAgB,CAACC,IAAI,CAACI,EAAE,CAAC;IAClC,KAAK,YAAY;MACf,OAAO,CACLJ,IAAI,CAACK,IAAI,CACV;IACH,KAAK,UAAU;MACb,OAAON,gBAAgB,CAACC,IAAI,CAACG,GAAG,CAAC;IACnC,KAAK,qBAAqB;MACxB,OAAOJ,gBAAgB,CAACC,IAAI,CAACM,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/C,KAAK,oBAAoB;MACvB,OAAO,CACL,GAAGP,gBAAgB,CAACC,IAAI,CAACI,EAAE,CAAC,EAC5B,GAAGL,gBAAgB,CAACC,IAAI,CAACO,IAAI,CAAC,CAC/B,CAACC,MAAM,CAACC,OAAO,CAAC;IACnB;MACE,OAAO,EAAE;EAAC;AAEd,CAAC;AAAC,IAAAC,QAAA,GAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,KAAK;EACLb,IAAI;EACJc,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,OAAO,GAAGpB,cAAc;IACxBqB,YAAY,GAAGnB;EACjB,CAAC,GAAGc,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAC5B,MAAMC,SAAS,GAAGpB,gBAAgB,CAACC,IAAI,CAAC;EAExC,MAAMoB,sBAAsB,GAAGA,CAACC,IAAI,EAAEC,SAAS,GAAG,EAAE,KAAK;IACvD,OAAOb,OAAO,CAACY,IAAI,CAAC,IAAI,CAAC,IAAAE,sCAAkB,EAACF,IAAI,EAAE,CAChDC,SAAS,EAAEH,SAAS,CACrB,CAACX,MAAM,CAACC,OAAO,CAAC,CAACe,IAAI,CAAC,GAAG,CAAC,EAAE;MAC3BR,OAAO;MACPC;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAM;IACJQ,WAAW;IACXC;EACF,CAAC,GAAGX,KAAK,CAACY,cAAc,EAAE;EAC1B,IAAIC,mBAAmB,GAAG,KAAK;EAE/B,KAAK,MAAMC,GAAG,IAAIhB,KAAK,CAACiB,IAAI,EAAE;IAC5B,IAAIV,sBAAsB,CAACS,GAAG,CAACJ,WAAW,EAAEI,GAAG,CAACxB,IAAI,CAAC,EAAE;MACrDU,KAAK,CAACgB,WAAW,CACf,0DAA0D,EAC1DF,GAAG,CACJ;IACH;IAEAD,mBAAmB,KAAnBA,mBAAmB,GAAKC,GAAG,CAACJ,WAAW,KAAKA,WAAW,IAAII,GAAG,CAACG,IAAI,KAAKN,mBAAmB;EAC7F;EAEA,IAAI,CAACE,mBAAmB,IAAIR,sBAAsB,CAACK,WAAW,CAAC,EAAE;IAC/DX,MAAM,CAAC,sDAAsD,CAAC;EAChE;AACF,CAAC,EAAE;EACDmB,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EACT,uEAAuE;MACzEW,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVvB,OAAO,EAAE;UACPwB,KAAK,EAAE;YACLvC,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDgB,YAAY,EAAE;UACZuB,KAAK,EAAE;YACLvC,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAwC,OAAA,CAAA9C,OAAA,GAAAe,QAAA;AAAAgC,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAA9C,OAAA"}
package/package.json CHANGED
@@ -6,6 +6,7 @@
6
6
  },
7
7
  "dependencies": {
8
8
  "@es-joy/jsdoccomment": "~0.37.0",
9
+ "are-docs-informative": "^0.0.1",
9
10
  "comment-parser": "1.3.1",
10
11
  "debug": "^4.3.4",
11
12
  "escape-string-regexp": "^4.0.0",
@@ -120,5 +121,5 @@
120
121
  "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
121
122
  "test-index": "npm run test-no-cov -- test/rules/index.js"
122
123
  },
123
- "version": "40.3.0"
124
+ "version": "41.1.0"
124
125
  }