eslint-plugin-jsdoc 40.2.1 → 40.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -43,6 +43,7 @@ JSDoc linting rules for ESLint.
43
43
  * [`multiline-blocks`](#user-content-eslint-plugin-jsdoc-rules-multiline-blocks)
44
44
  * [`newline-after-description`](#user-content-eslint-plugin-jsdoc-rules-newline-after-description)
45
45
  * [`no-bad-blocks`](#user-content-eslint-plugin-jsdoc-rules-no-bad-blocks)
46
+ * [`no-blank-block-descriptions`](#user-content-eslint-plugin-jsdoc-rules-no-blank-block-descriptions)
46
47
  * [`no-defaults`](#user-content-eslint-plugin-jsdoc-rules-no-defaults)
47
48
  * [`no-missing-syntax`](#user-content-eslint-plugin-jsdoc-rules-no-missing-syntax)
48
49
  * [`no-multi-asterisks`](#user-content-eslint-plugin-jsdoc-rules-no-multi-asterisks)
@@ -4492,9 +4493,9 @@ The format is as follows:
4492
4493
 
4493
4494
  Set to `false` to disable auto-removal of types that are redundant with the [`typed` option](#user-content-typed).
4494
4495
 
4495
- <a name="user-content-eslint-plugin-jsdoc-rules-check-tag-names-jsxtags"></a>
4496
- <a name="eslint-plugin-jsdoc-rules-check-tag-names-jsxtags"></a>
4497
- #### <code>jsxTags</code>
4496
+ <a name="user-content-eslint-plugin-jsdoc-rules-check-tag-names-options-6-jsxtags"></a>
4497
+ <a name="eslint-plugin-jsdoc-rules-check-tag-names-options-6-jsxtags"></a>
4498
+ ##### <code>jsxTags</code>
4498
4499
 
4499
4500
  If this is set to `true`, all of the following tags used to control JSX output are allowed:
4500
4501
 
@@ -4507,9 +4508,9 @@ jsxRuntime
4507
4508
 
4508
4509
  For more information, see the [babel documentation](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx).
4509
4510
 
4510
- <a name="user-content-eslint-plugin-jsdoc-rules-check-tag-names-typed"></a>
4511
- <a name="eslint-plugin-jsdoc-rules-check-tag-names-typed"></a>
4512
- #### <code>typed</code>
4511
+ <a name="user-content-eslint-plugin-jsdoc-rules-check-tag-names-options-6-typed"></a>
4512
+ <a name="eslint-plugin-jsdoc-rules-check-tag-names-options-6-typed"></a>
4513
+ ##### <code>typed</code>
4513
4514
 
4514
4515
  If this is set to `true`, additionally checks for tag names that are redundant when using a type checker such as TypeScript.
4515
4516
 
@@ -4564,14 +4565,12 @@ static
4564
4565
  this
4565
4566
  ```
4566
4567
 
4567
- Additionally, for `@param` and `@return` tags, the rule will flag unnecessary type descriptions (e.g. `@param {string}`).
4568
-
4569
4568
  |||
4570
4569
  |---|---|
4571
4570
  |Context|everywhere|
4572
4571
  |Tags|N/A|
4573
4572
  |Recommended|true|
4574
- |Options|`definedTags`|
4573
+ |Options|`definedTags`, `enableFixer`, `jsxTags`, `typed`|
4575
4574
  |Settings|`tagNamePreference`, `mode`|
4576
4575
 
4577
4576
  The following patterns are considered problems:
@@ -9227,6 +9226,76 @@ function quux (foo) {
9227
9226
  ````
9228
9227
 
9229
9228
 
9229
+ <a name="user-content-eslint-plugin-jsdoc-rules-no-blank-block-descriptions"></a>
9230
+ <a name="eslint-plugin-jsdoc-rules-no-blank-block-descriptions"></a>
9231
+ ### <code>no-blank-block-descriptions</code>
9232
+
9233
+ If tags are present, this rule will prevent empty lines in the
9234
+ block description.
9235
+
9236
+ If no tags are present, this rule will prevent extra empty lines
9237
+ in the block description.
9238
+
9239
+ |||
9240
+ |---|---|
9241
+ |Context|everywhere|
9242
+ |Tags|(Block description)|
9243
+ |Recommended|false|
9244
+ |Settings||
9245
+ |Options||
9246
+
9247
+ The following patterns are considered problems:
9248
+
9249
+ ````js
9250
+ /**
9251
+ *
9252
+ * @param {number} x
9253
+ */
9254
+ function functionWithClearName(x) {}
9255
+ // Message: There should be no blank lines in block descriptions followed by tags.
9256
+
9257
+ /**
9258
+ *
9259
+ *
9260
+ */
9261
+ function functionWithClearName() {}
9262
+ // Message: There should be no extra blank lines in block descriptions not followed by tags.
9263
+ ````
9264
+
9265
+ The following patterns are not considered problems:
9266
+
9267
+ ````js
9268
+ /**
9269
+ * Non-empty description
9270
+ * @param {number} x
9271
+ */
9272
+ function functionWithClearName(x) {}
9273
+
9274
+ /**
9275
+ * @param {number} x
9276
+ */
9277
+ function functionWithClearName(x) {}
9278
+
9279
+ /**
9280
+ *
9281
+ */
9282
+ function functionWithClearName() {}
9283
+
9284
+ /**
9285
+ */
9286
+ function functionWithClearName() {}
9287
+
9288
+ /** */
9289
+ function functionWithClearName() {}
9290
+
9291
+ /** Some desc. */
9292
+ function functionWithClearName() {}
9293
+
9294
+ /** @someTag */
9295
+ function functionWithClearName() {}
9296
+ ````
9297
+
9298
+
9230
9299
  <a name="user-content-eslint-plugin-jsdoc-rules-no-defaults"></a>
9231
9300
  <a name="eslint-plugin-jsdoc-rules-no-defaults"></a>
9232
9301
  ### <code>no-defaults</code>
package/dist/index.js CHANGED
@@ -22,6 +22,7 @@ var _matchName = _interopRequireDefault(require("./rules/matchName"));
22
22
  var _multilineBlocks = _interopRequireDefault(require("./rules/multilineBlocks"));
23
23
  var _newlineAfterDescription = _interopRequireDefault(require("./rules/newlineAfterDescription"));
24
24
  var _noBadBlocks = _interopRequireDefault(require("./rules/noBadBlocks"));
25
+ var _noBlankBlockDescriptions = _interopRequireDefault(require("./rules/noBlankBlockDescriptions"));
25
26
  var _noDefaults = _interopRequireDefault(require("./rules/noDefaults"));
26
27
  var _noMissingSyntax = _interopRequireDefault(require("./rules/noMissingSyntax"));
27
28
  var _noMultiAsterisks = _interopRequireDefault(require("./rules/noMultiAsterisks"));
@@ -76,6 +77,7 @@ const index = {
76
77
  'multiline-blocks': _multilineBlocks.default,
77
78
  'newline-after-description': _newlineAfterDescription.default,
78
79
  'no-bad-blocks': _noBadBlocks.default,
80
+ 'no-blank-block-descriptions': _noBlankBlockDescriptions.default,
79
81
  'no-defaults': _noDefaults.default,
80
82
  'no-missing-syntax': _noMissingSyntax.default,
81
83
  'no-multi-asterisks': _noMultiAsterisks.default,
@@ -132,6 +134,7 @@ const createRecommendedRuleset = warnOrError => {
132
134
  'jsdoc/multiline-blocks': warnOrError,
133
135
  'jsdoc/newline-after-description': warnOrError,
134
136
  'jsdoc/no-bad-blocks': 'off',
137
+ 'jsdoc/no-blank-block-descriptions': 'off',
135
138
  'jsdoc/no-defaults': 'off',
136
139
  'jsdoc/no-missing-syntax': 'off',
137
140
  'jsdoc/no-multi-asterisks': 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","_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","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 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 /* 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","_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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"}
@@ -198,6 +198,45 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
198
198
  lastDescriptionLine
199
199
  };
200
200
  };
201
+ utils.setBlockDescription = setter => {
202
+ const descLines = [];
203
+ let startIdx;
204
+ let endIdx;
205
+ let info;
206
+ jsdoc.source.some(({
207
+ tokens: {
208
+ description,
209
+ start,
210
+ delimiter,
211
+ postDelimiter,
212
+ tag,
213
+ end
214
+ }
215
+ }, idx) => {
216
+ if (delimiter === '/**') {
217
+ return false;
218
+ }
219
+ if (startIdx === undefined) {
220
+ startIdx = idx;
221
+ info = {
222
+ delimiter,
223
+ postDelimiter,
224
+ start
225
+ };
226
+ }
227
+ if (tag || end) {
228
+ endIdx = idx;
229
+ return true;
230
+ }
231
+ descLines.push(description);
232
+ return false;
233
+ });
234
+
235
+ /* istanbul ignore else -- Won't be called if missing */
236
+ if (descLines.length) {
237
+ jsdoc.source.splice(startIdx, endIdx - startIdx, ...setter(info, seedTokens, descLines));
238
+ }
239
+ };
201
240
  utils.setDescriptionLines = (matcher, setter) => {
202
241
  let finalIdx = 0;
203
242
  jsdoc.source.some(({
@@ -1 +1 @@
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","text","getText","lastLineBreakPos","slice","range","search","removeRange","test","charAt","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","returnArray","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","push","join","setTagDescription","matcher","setter","finalIdx","idx","getDescription","lastDescriptionLine","length","setDescriptionLines","changeTag","src","entries","setTag","number","delimiter","removeTag","tagIndex","removeEmptyBlock","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","ending","spliceIdx","item","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","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","repeat","jsdc","iterateAllJsdocs","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","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 if (!replacement) {\n const text = sourceCode.getText();\n const lastLineBreakPos = text.slice(\n 0, jsdocNode.range[0],\n ).search(/\\n[ \\t]*$/u);\n if (lastLineBreakPos > -1) {\n return fixer.removeRange([\n lastLineBreakPos, jsdocNode.range[1],\n ]);\n }\n\n return fixer.removeRange(\n (/\\s/u).test(text.charAt(jsdocNode.range[1])) ?\n [\n jsdocNode.range[0], jsdocNode.range[1] + 1,\n ] :\n jsdocNode.range,\n );\n }\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 = (tagIndex, {\n removeEmptyBlock = false,\n tagSourceOffset = 0,\n } = {}) => {\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 }) => {\n return number === srcNumber;\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: ending,\n },\n }) => {\n if (!tag && !ending) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n\n const spliceIdx = sourceIndex + tagSourceOffset;\n\n const {\n delimiter,\n end,\n } = jsdoc.source[spliceIdx].tokens;\n\n /* istanbul ignore if -- Currently want to clear entirely if removing tags */\n if (!removeEmptyBlock && (end || delimiter === '/**')) {\n const {\n tokens,\n } = jsdoc.source[spliceIdx];\n for (const item of [\n 'tag',\n 'postTag',\n 'type',\n 'postType',\n 'name',\n 'postName',\n 'description',\n ]) {\n tokens[item] = '';\n }\n } else {\n jsdoc.source.splice(spliceIdx, spliceCount - tagSourceOffset);\n }\n\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","text","getText","lastLineBreakPos","slice","range","search","removeRange","test","charAt","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","returnArray","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","push","join","setTagDescription","matcher","setter","finalIdx","idx","getDescription","lastDescriptionLine","length","setBlockDescription","descLines","startIdx","endIdx","info","delimiter","undefined","splice","setDescriptionLines","changeTag","src","entries","setTag","number","removeTag","tagIndex","removeEmptyBlock","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","ending","spliceIdx","item","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","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","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","indnt","repeat","jsdc","iterateAllJsdocs","additiveCommentContexts","trackedJsdocs","Set","callIterator","jsdocNodes","lastCall","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 if (!replacement) {\n const text = sourceCode.getText();\n const lastLineBreakPos = text.slice(\n 0, jsdocNode.range[0],\n ).search(/\\n[ \\t]*$/u);\n if (lastLineBreakPos > -1) {\n return fixer.removeRange([\n lastLineBreakPos, jsdocNode.range[1],\n ]);\n }\n\n return fixer.removeRange(\n (/\\s/u).test(text.charAt(jsdocNode.range[1])) ?\n [\n jsdocNode.range[0], jsdocNode.range[1] + 1,\n ] :\n jsdocNode.range,\n );\n }\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.setBlockDescription = (setter) => {\n const descLines = [];\n let startIdx;\n let endIdx;\n let info;\n\n jsdoc.source.some(({\n tokens: {\n description,\n start,\n delimiter,\n postDelimiter,\n tag,\n end,\n },\n }, idx) => {\n if (delimiter === '/**') {\n return false;\n }\n\n if (startIdx === undefined) {\n startIdx = idx;\n info = {\n delimiter,\n postDelimiter,\n start,\n };\n }\n\n if (tag || end) {\n endIdx = idx;\n return true;\n }\n\n descLines.push(description);\n return false;\n });\n\n /* istanbul ignore else -- Won't be called if missing */\n if (descLines.length) {\n jsdoc.source.splice(\n startIdx, endIdx - startIdx, ...setter(info, seedTokens, descLines),\n );\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 = (tagIndex, {\n removeEmptyBlock = false,\n tagSourceOffset = 0,\n } = {}) => {\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 }) => {\n return number === srcNumber;\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: ending,\n },\n }) => {\n if (!tag && !ending) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n\n const spliceIdx = sourceIndex + tagSourceOffset;\n\n const {\n delimiter,\n end,\n } = jsdoc.source[spliceIdx].tokens;\n\n /* istanbul ignore if -- Currently want to clear entirely if removing tags */\n if (!removeEmptyBlock && (end || delimiter === '/**')) {\n const {\n tokens,\n } = jsdoc.source[spliceIdx];\n for (const item of [\n 'tag',\n 'postTag',\n 'type',\n 'postType',\n 'name',\n 'postName',\n 'description',\n ]) {\n tokens[item] = '';\n }\n } else {\n jsdoc.source.splice(spliceIdx, spliceCount - tagSourceOffset);\n }\n\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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"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const anyWhitespaceLines = /^\s*$/u;
10
+ const atLeastTwoLinesWhitespace = /^[ \t]*\n[ \t]*\n\s*$/u;
11
+ var _default = (0, _iterateJsdoc.default)(({
12
+ jsdoc,
13
+ utils
14
+ }) => {
15
+ const {
16
+ description,
17
+ descriptions,
18
+ lastDescriptionLine
19
+ } = utils.getDescription();
20
+ const regex = jsdoc.tags.length ? anyWhitespaceLines : atLeastTwoLinesWhitespace;
21
+ if (descriptions.length && regex.test(description)) {
22
+ if (jsdoc.tags.length) {
23
+ utils.reportJSDoc('There should be no blank lines in block descriptions followed by tags.', {
24
+ line: lastDescriptionLine
25
+ }, () => {
26
+ utils.setBlockDescription(() => {
27
+ // Remove all lines
28
+ return [];
29
+ });
30
+ });
31
+ } else {
32
+ utils.reportJSDoc('There should be no extra blank lines in block descriptions not followed by tags.', {
33
+ line: lastDescriptionLine
34
+ }, () => {
35
+ utils.setBlockDescription((info, seedTokens) => {
36
+ return [
37
+ // Keep the starting line
38
+ {
39
+ tokens: seedTokens({
40
+ ...info,
41
+ description: ''
42
+ })
43
+ }];
44
+ });
45
+ });
46
+ }
47
+ }
48
+ }, {
49
+ iterateAllJsdocs: true,
50
+ meta: {
51
+ docs: {
52
+ description: 'Detects and removes extra lines of a blank block description',
53
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-blank-block-descriptions'
54
+ },
55
+ fixable: 'whitespace',
56
+ schema: [],
57
+ type: 'layout'
58
+ }
59
+ });
60
+ exports.default = _default;
61
+ module.exports = exports.default;
62
+ //# sourceMappingURL=noBlankBlockDescriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"noBlankBlockDescriptions.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","anyWhitespaceLines","atLeastTwoLinesWhitespace","_default","iterateJsdoc","jsdoc","utils","description","descriptions","lastDescriptionLine","getDescription","regex","tags","length","test","reportJSDoc","line","setBlockDescription","info","seedTokens","tokens","iterateAllJsdocs","meta","docs","url","fixable","schema","type","exports","module"],"sources":["../../src/rules/noBlankBlockDescriptions.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst anyWhitespaceLines = /^\\s*$/u;\nconst atLeastTwoLinesWhitespace = /^[ \\t]*\\n[ \\t]*\\n\\s*$/u;\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n}) => {\n const {\n description,\n descriptions,\n lastDescriptionLine,\n } = utils.getDescription();\n\n const regex = jsdoc.tags.length ?\n anyWhitespaceLines :\n atLeastTwoLinesWhitespace;\n\n if (descriptions.length && regex.test(description)) {\n if (jsdoc.tags.length) {\n utils.reportJSDoc(\n 'There should be no blank lines in block descriptions followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription(() => {\n // Remove all lines\n return [];\n });\n },\n );\n } else {\n utils.reportJSDoc(\n 'There should be no extra blank lines in block descriptions not followed by tags.',\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription((info, seedTokens) => {\n return [\n // Keep the starting line\n {\n tokens: seedTokens({\n ...info,\n description: '',\n }),\n },\n ];\n });\n },\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Detects and removes extra lines of a blank block description',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-blank-block-descriptions',\n },\n fixable: 'whitespace',\n schema: [],\n type: 'layout',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE3C,MAAMG,kBAAkB,GAAG,QAAQ;AACnC,MAAMC,yBAAyB,GAAG,wBAAwB;AAAC,IAAAC,QAAA,GAE5C,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGH,KAAK,CAACI,cAAc,EAAE;EAE1B,MAAMC,KAAK,GAAGN,KAAK,CAACO,IAAI,CAACC,MAAM,GAC7BZ,kBAAkB,GAClBC,yBAAyB;EAE3B,IAAIM,YAAY,CAACK,MAAM,IAAIF,KAAK,CAACG,IAAI,CAACP,WAAW,CAAC,EAAE;IAClD,IAAIF,KAAK,CAACO,IAAI,CAACC,MAAM,EAAE;MACrBP,KAAK,CAACS,WAAW,CACf,wEAAwE,EACxE;QACEC,IAAI,EAAEP;MACR,CAAC,EACD,MAAM;QACJH,KAAK,CAACW,mBAAmB,CAAC,MAAM;UAC9B;UACA,OAAO,EAAE;QACX,CAAC,CAAC;MACJ,CAAC,CACF;IACH,CAAC,MAAM;MACLX,KAAK,CAACS,WAAW,CACf,kFAAkF,EAClF;QACEC,IAAI,EAAEP;MACR,CAAC,EACD,MAAM;QACJH,KAAK,CAACW,mBAAmB,CAAC,CAACC,IAAI,EAAEC,UAAU,KAAK;UAC9C,OAAO;UACL;UACA;YACEC,MAAM,EAAED,UAAU,CAAC;cACjB,GAAGD,IAAI;cACPX,WAAW,EAAE;YACf,CAAC;UACH,CAAC,CACF;QACH,CAAC,CAAC;MACJ,CAAC,CACF;IACH;EACF;AACF,CAAC,EAAE;EACDc,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJhB,WAAW,EAAE,8DAA8D;MAC3EiB,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,YAAY;IACrBC,MAAM,EAAE,EAAE;IACVC,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,OAAA,CAAA5B,OAAA,GAAAG,QAAA;AAAA0B,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAA5B,OAAA"}
package/package.json CHANGED
@@ -120,5 +120,5 @@
120
120
  "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
121
121
  "test-index": "npm run test-no-cov -- test/rules/index.js"
122
122
  },
123
- "version": "40.2.1"
123
+ "version": "40.3.0"
124
124
  }