eslint-plugin-jsdoc 41.1.1 → 42.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -21,7 +21,6 @@ var _informativeDocs = _interopRequireDefault(require("./rules/informativeDocs")
21
21
  var _matchDescription = _interopRequireDefault(require("./rules/matchDescription"));
22
22
  var _matchName = _interopRequireDefault(require("./rules/matchName"));
23
23
  var _multilineBlocks = _interopRequireDefault(require("./rules/multilineBlocks"));
24
- var _newlineAfterDescription = _interopRequireDefault(require("./rules/newlineAfterDescription"));
25
24
  var _noBadBlocks = _interopRequireDefault(require("./rules/noBadBlocks"));
26
25
  var _noBlankBlockDescriptions = _interopRequireDefault(require("./rules/noBlankBlockDescriptions"));
27
26
  var _noDefaults = _interopRequireDefault(require("./rules/noDefaults"));
@@ -77,7 +76,6 @@ const index = {
77
76
  'match-description': _matchDescription.default,
78
77
  'match-name': _matchName.default,
79
78
  'multiline-blocks': _multilineBlocks.default,
80
- 'newline-after-description': _newlineAfterDescription.default,
81
79
  'no-bad-blocks': _noBadBlocks.default,
82
80
  'no-blank-block-descriptions': _noBlankBlockDescriptions.default,
83
81
  'no-defaults': _noDefaults.default,
@@ -135,7 +133,6 @@ const createRecommendedRuleset = warnOrError => {
135
133
  'jsdoc/match-description': 'off',
136
134
  'jsdoc/match-name': 'off',
137
135
  'jsdoc/multiline-blocks': warnOrError,
138
- 'jsdoc/newline-after-description': warnOrError,
139
136
  'jsdoc/no-bad-blocks': 'off',
140
137
  'jsdoc/no-blank-block-descriptions': 'off',
141
138
  'jsdoc/no-defaults': 'off',
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","_informativeDocs","_matchDescription","_matchName","_multilineBlocks","_newlineAfterDescription","_noBadBlocks","_noBlankBlockDescriptions","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_validTypes","obj","__esModule","default","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTypes","checkValues","emptyTags","implementsOnClasses","informativeDocs","matchDescription","matchName","multilineBlocks","newlineAfterDescription","noBadBlocks","noBlankBlockDescriptions","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","validTypes","createRecommendedRuleset","warnOrError","plugins","createRecommendedTypeScriptRuleset","ruleset","typed","recommended","_default","exports","module"],"sources":["../src/index.js"],"sourcesContent":["import checkAccess from './rules/checkAccess';\nimport checkAlignment from './rules/checkAlignment';\nimport checkExamples from './rules/checkExamples';\nimport checkIndentation from './rules/checkIndentation';\nimport checkLineAlignment from './rules/checkLineAlignment';\nimport checkParamNames from './rules/checkParamNames';\nimport checkPropertyNames from './rules/checkPropertyNames';\nimport checkSyntax from './rules/checkSyntax';\nimport checkTagNames from './rules/checkTagNames';\nimport checkTypes from './rules/checkTypes';\nimport checkValues from './rules/checkValues';\nimport emptyTags from './rules/emptyTags';\nimport implementsOnClasses from './rules/implementsOnClasses';\nimport informativeDocs from './rules/informativeDocs';\nimport matchDescription from './rules/matchDescription';\nimport matchName from './rules/matchName';\nimport multilineBlocks from './rules/multilineBlocks';\nimport newlineAfterDescription from './rules/newlineAfterDescription';\nimport noBadBlocks from './rules/noBadBlocks';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions';\nimport noDefaults from './rules/noDefaults';\nimport noMissingSyntax from './rules/noMissingSyntax';\nimport noMultiAsterisks from './rules/noMultiAsterisks';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax';\nimport noTypes from './rules/noTypes';\nimport noUndefinedTypes from './rules/noUndefinedTypes';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix';\nimport requireDescription from './rules/requireDescription';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence';\nimport requireExample from './rules/requireExample';\nimport requireFileOverview from './rules/requireFileOverview';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription';\nimport requireJsdoc from './rules/requireJsdoc';\nimport requireParam from './rules/requireParam';\nimport requireParamDescription from './rules/requireParamDescription';\nimport requireParamName from './rules/requireParamName';\nimport requireParamType from './rules/requireParamType';\nimport requireProperty from './rules/requireProperty';\nimport requirePropertyDescription from './rules/requirePropertyDescription';\nimport requirePropertyName from './rules/requirePropertyName';\nimport requirePropertyType from './rules/requirePropertyType';\nimport requireReturns from './rules/requireReturns';\nimport requireReturnsCheck from './rules/requireReturnsCheck';\nimport requireReturnsDescription from './rules/requireReturnsDescription';\nimport requireReturnsType from './rules/requireReturnsType';\nimport requireThrows from './rules/requireThrows';\nimport requireYields from './rules/requireYields';\nimport requireYieldsCheck from './rules/requireYieldsCheck';\nimport sortTags from './rules/sortTags';\nimport tagLines from './rules/tagLines';\nimport textEscaping from './rules/textEscaping';\nimport validTypes from './rules/validTypes';\n\nconst index = {\n configs: {},\n rules: {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'informative-docs': informativeDocs,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'newline-after-description': newlineAfterDescription,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-throws': requireThrows,\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'valid-types': validTypes,\n },\n};\n\nconst createRecommendedRuleset = (warnOrError) => {\n return {\n plugins: [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/newline-after-description': warnOrError,\n 'jsdoc/no-bad-blocks': 'off',\n 'jsdoc/no-blank-block-descriptions': 'off',\n 'jsdoc/no-defaults': 'off',\n 'jsdoc/no-missing-syntax': 'off',\n 'jsdoc/no-multi-asterisks': warnOrError,\n 'jsdoc/no-restricted-syntax': 'off',\n 'jsdoc/no-types': 'off',\n 'jsdoc/no-undefined-types': warnOrError,\n 'jsdoc/require-asterisk-prefix': 'off',\n 'jsdoc/require-description': 'off',\n 'jsdoc/require-description-complete-sentence': 'off',\n 'jsdoc/require-example': 'off',\n 'jsdoc/require-file-overview': 'off',\n 'jsdoc/require-hyphen-before-param-description': 'off',\n 'jsdoc/require-jsdoc': warnOrError,\n 'jsdoc/require-param': warnOrError,\n 'jsdoc/require-param-description': warnOrError,\n 'jsdoc/require-param-name': warnOrError,\n 'jsdoc/require-param-type': warnOrError,\n 'jsdoc/require-property': warnOrError,\n 'jsdoc/require-property-description': warnOrError,\n 'jsdoc/require-property-name': warnOrError,\n 'jsdoc/require-property-type': warnOrError,\n 'jsdoc/require-returns': warnOrError,\n 'jsdoc/require-returns-check': warnOrError,\n 'jsdoc/require-returns-description': warnOrError,\n 'jsdoc/require-returns-type': warnOrError,\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\nconst createRecommendedTypeScriptRuleset = (warnOrError) => {\n const ruleset = createRecommendedRuleset(warnOrError);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/check-tag-names': [\n warnOrError, {\n typed: true,\n },\n ],\n 'jsdoc/no-types': warnOrError,\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable indent */\n },\n };\n};\n\nindex.configs.recommended = createRecommendedRuleset('warn');\nindex.configs['recommended-error'] = createRecommendedRuleset('error');\nindex.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');\nindex.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');\n\nexport default index;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["_checkAccess","_interopRequireDefault","require","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTypes","_checkValues","_emptyTags","_implementsOnClasses","_informativeDocs","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_validTypes","obj","__esModule","default","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTypes","checkValues","emptyTags","implementsOnClasses","informativeDocs","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","validTypes","createRecommendedRuleset","warnOrError","plugins","createRecommendedTypeScriptRuleset","ruleset","typed","recommended","_default","exports","module"],"sources":["../src/index.js"],"sourcesContent":["import checkAccess from './rules/checkAccess';\nimport checkAlignment from './rules/checkAlignment';\nimport checkExamples from './rules/checkExamples';\nimport checkIndentation from './rules/checkIndentation';\nimport checkLineAlignment from './rules/checkLineAlignment';\nimport checkParamNames from './rules/checkParamNames';\nimport checkPropertyNames from './rules/checkPropertyNames';\nimport checkSyntax from './rules/checkSyntax';\nimport checkTagNames from './rules/checkTagNames';\nimport checkTypes from './rules/checkTypes';\nimport checkValues from './rules/checkValues';\nimport emptyTags from './rules/emptyTags';\nimport implementsOnClasses from './rules/implementsOnClasses';\nimport informativeDocs from './rules/informativeDocs';\nimport matchDescription from './rules/matchDescription';\nimport matchName from './rules/matchName';\nimport multilineBlocks from './rules/multilineBlocks';\nimport noBadBlocks from './rules/noBadBlocks';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions';\nimport noDefaults from './rules/noDefaults';\nimport noMissingSyntax from './rules/noMissingSyntax';\nimport noMultiAsterisks from './rules/noMultiAsterisks';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax';\nimport noTypes from './rules/noTypes';\nimport noUndefinedTypes from './rules/noUndefinedTypes';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix';\nimport requireDescription from './rules/requireDescription';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence';\nimport requireExample from './rules/requireExample';\nimport requireFileOverview from './rules/requireFileOverview';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription';\nimport requireJsdoc from './rules/requireJsdoc';\nimport requireParam from './rules/requireParam';\nimport requireParamDescription from './rules/requireParamDescription';\nimport requireParamName from './rules/requireParamName';\nimport requireParamType from './rules/requireParamType';\nimport requireProperty from './rules/requireProperty';\nimport requirePropertyDescription from './rules/requirePropertyDescription';\nimport requirePropertyName from './rules/requirePropertyName';\nimport requirePropertyType from './rules/requirePropertyType';\nimport requireReturns from './rules/requireReturns';\nimport requireReturnsCheck from './rules/requireReturnsCheck';\nimport requireReturnsDescription from './rules/requireReturnsDescription';\nimport requireReturnsType from './rules/requireReturnsType';\nimport requireThrows from './rules/requireThrows';\nimport requireYields from './rules/requireYields';\nimport requireYieldsCheck from './rules/requireYieldsCheck';\nimport sortTags from './rules/sortTags';\nimport tagLines from './rules/tagLines';\nimport textEscaping from './rules/textEscaping';\nimport validTypes from './rules/validTypes';\n\nconst index = {\n configs: {},\n rules: {\n 'check-access': checkAccess,\n 'check-alignment': checkAlignment,\n 'check-examples': checkExamples,\n 'check-indentation': checkIndentation,\n 'check-line-alignment': checkLineAlignment,\n 'check-param-names': checkParamNames,\n 'check-property-names': checkPropertyNames,\n 'check-syntax': checkSyntax,\n 'check-tag-names': checkTagNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'empty-tags': emptyTags,\n 'implements-on-classes': implementsOnClasses,\n 'informative-docs': informativeDocs,\n 'match-description': matchDescription,\n 'match-name': matchName,\n 'multiline-blocks': multilineBlocks,\n 'no-bad-blocks': noBadBlocks,\n 'no-blank-block-descriptions': noBlankBlockDescriptions,\n 'no-defaults': noDefaults,\n 'no-missing-syntax': noMissingSyntax,\n 'no-multi-asterisks': noMultiAsterisks,\n 'no-restricted-syntax': noRestrictedSyntax,\n 'no-types': noTypes,\n 'no-undefined-types': noUndefinedTypes,\n 'require-asterisk-prefix': requireAsteriskPrefix,\n 'require-description': requireDescription,\n 'require-description-complete-sentence': requireDescriptionCompleteSentence,\n 'require-example': requireExample,\n 'require-file-overview': requireFileOverview,\n 'require-hyphen-before-param-description': requireHyphenBeforeParamDescription,\n 'require-jsdoc': requireJsdoc,\n 'require-param': requireParam,\n 'require-param-description': requireParamDescription,\n 'require-param-name': requireParamName,\n 'require-param-type': requireParamType,\n 'require-property': requireProperty,\n 'require-property-description': requirePropertyDescription,\n 'require-property-name': requirePropertyName,\n 'require-property-type': requirePropertyType,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-throws': requireThrows,\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'valid-types': validTypes,\n },\n};\n\nconst createRecommendedRuleset = (warnOrError) => {\n return {\n plugins: [\n 'jsdoc',\n ],\n rules: {\n 'jsdoc/check-access': warnOrError,\n 'jsdoc/check-alignment': warnOrError,\n 'jsdoc/check-examples': 'off',\n 'jsdoc/check-indentation': 'off',\n 'jsdoc/check-line-alignment': 'off',\n 'jsdoc/check-param-names': warnOrError,\n 'jsdoc/check-property-names': warnOrError,\n 'jsdoc/check-syntax': 'off',\n 'jsdoc/check-tag-names': warnOrError,\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/match-description': 'off',\n 'jsdoc/match-name': 'off',\n 'jsdoc/multiline-blocks': warnOrError,\n 'jsdoc/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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"}
@@ -74,7 +74,7 @@ var _default = (0, _iterateJsdoc.default)(({
74
74
  if (forceReturnsWithAsync && isAsync) {
75
75
  return true;
76
76
  }
77
- return !isAsync && iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(forceReturnsWithAsync);
77
+ return iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(forceReturnsWithAsync);
78
78
  };
79
79
  if (shouldReport()) {
80
80
  report(`Missing JSDoc @${tagName} declaration.`);
@@ -1 +1 @@
1
- {"version":3,"file":"requireReturns.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","iterateJsdoc","report","context","forceRequireReturn","forceReturnsWithAsync","options","tagName","getPreferredTagName","tags","getTags","length","iteratingFunction","isIteratingFunction","tag","missingReturnTag","shouldReport","isVirtualFunction","isAsync","hasTag","hasValueOrExecutorHasNonEmptyResolveValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","checkConstructors","type","checkGetters","contexts","items","anyOf","comment","exemptedBy","exports","module"],"sources":["../../src/rules/requireReturns.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * We can skip checking for a return value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n *\n * In either of these cases the return value is optional or not defined.\n *\n * @param {*} utils\n * a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean}\n * true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a return value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a return value by definition (https://jsdoc.app/tags-class.html)\n // So we can bail out here, too.\n 'class',\n 'constructor',\n\n // Return type is specified by type in @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n const {\n forceRequireReturn = false,\n forceReturnsWithAsync = false,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @returns comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = utils.getPreferredTagName({\n tagName: 'returns',\n });\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingReturnTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingReturnTag) {\n return false;\n }\n\n if (forceRequireReturn && (\n iteratingFunction || utils.isVirtualFunction()\n )) {\n return true;\n }\n\n const isAsync = !iteratingFunction && utils.hasTag('async') ||\n iteratingFunction && utils.isAsync();\n\n if (forceReturnsWithAsync && isAsync) {\n return true;\n }\n\n return !isAsync && iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(\n forceReturnsWithAsync,\n );\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that returns are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: false,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireReturn: {\n default: false,\n type: 'boolean',\n },\n forceReturnsWithAsync: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireReturns.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","canSkip","utils","hasATag","avoidDocs","_default","iterateJsdoc","report","context","forceRequireReturn","forceReturnsWithAsync","options","tagName","getPreferredTagName","tags","getTags","length","iteratingFunction","isIteratingFunction","tag","missingReturnTag","shouldReport","isVirtualFunction","isAsync","hasTag","hasValueOrExecutorHasNonEmptyResolveValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","checkConstructors","type","checkGetters","contexts","items","anyOf","comment","exemptedBy","exports","module"],"sources":["../../src/rules/requireReturns.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * We can skip checking for a return value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n *\n * In either of these cases the return value is optional or not defined.\n *\n * @param {*} utils\n * a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean}\n * true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a return value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a return value by definition (https://jsdoc.app/tags-class.html)\n // So we can bail out here, too.\n 'class',\n 'constructor',\n\n // Return type is specified by type in @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n const {\n forceRequireReturn = false,\n forceReturnsWithAsync = false,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @returns comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = utils.getPreferredTagName({\n tagName: 'returns',\n });\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [\n tag,\n ] = tags;\n const missingReturnTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingReturnTag) {\n return false;\n }\n\n if (forceRequireReturn && (\n iteratingFunction || utils.isVirtualFunction()\n )) {\n return true;\n }\n\n const isAsync = !iteratingFunction && utils.hasTag('async') ||\n iteratingFunction && utils.isAsync();\n\n if (forceReturnsWithAsync && isAsync) {\n return true;\n }\n\n return iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(\n forceReturnsWithAsync,\n );\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that returns are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: false,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireReturn: {\n default: false,\n type: 'boolean',\n },\n forceReturnsWithAsync: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
@@ -13,14 +13,18 @@ var _default = (0, _iterateJsdoc.default)(({
13
13
  }) => {
14
14
  const [alwaysNever = 'never', {
15
15
  count = 1,
16
- dropEndLines = false,
17
- noEndLines = false,
16
+ endLines = 0,
17
+ startLines = 0,
18
+ applyToEndTag = true,
18
19
  tags = {}
19
20
  } = {}] = context.options;
21
+
22
+ // eslint-disable-next-line complexity -- Temporary
20
23
  jsdoc.tags.some((tg, tagIdx) => {
21
24
  let lastTag;
22
25
  let lastEmpty = null;
23
26
  let reportIndex = null;
27
+ let emptyLinesCount = 0;
24
28
  for (const [idx, {
25
29
  tokens: {
26
30
  tag,
@@ -44,19 +48,34 @@ var _default = (0, _iterateJsdoc.default)(({
44
48
  continue;
45
49
  }
46
50
  if (!end) {
51
+ if (empty) {
52
+ emptyLinesCount++;
53
+ } else {
54
+ emptyLinesCount = 0;
55
+ }
47
56
  lastEmpty = empty ? idx : null;
48
57
  }
49
58
  lastTag = tag;
50
59
  }
51
- if (dropEndLines && lastEmpty !== null && tagIdx === jsdoc.tags.length - 1) {
52
- const fixer = () => {
53
- utils.removeTag(tagIdx, {
54
- tagSourceOffset: lastEmpty
55
- });
56
- };
57
- utils.reportJSDoc('Expected no trailing lines', {
58
- line: tg.source[lastEmpty].number
59
- }, fixer);
60
+ if (typeof endLines === 'number' && lastEmpty !== null && tagIdx === jsdoc.tags.length - 1) {
61
+ const lineDiff = endLines - emptyLinesCount;
62
+ if (lineDiff < 0) {
63
+ const fixer = () => {
64
+ utils.removeTag(tagIdx, {
65
+ tagSourceOffset: lastEmpty + lineDiff + 1
66
+ });
67
+ };
68
+ utils.reportJSDoc(`Expected ${endLines} trailing lines`, {
69
+ line: tg.source[lastEmpty].number + lineDiff + 1
70
+ }, fixer);
71
+ } else if (lineDiff > 0) {
72
+ const fixer = () => {
73
+ utils.addLines(tagIdx, lastEmpty, endLines - emptyLinesCount);
74
+ };
75
+ utils.reportJSDoc(`Expected ${endLines} trailing lines`, {
76
+ line: tg.source[lastEmpty].number
77
+ }, fixer);
78
+ }
60
79
  return true;
61
80
  }
62
81
  if (reportIndex !== null) {
@@ -72,7 +91,7 @@ var _default = (0, _iterateJsdoc.default)(({
72
91
  }
73
92
  return false;
74
93
  });
75
- (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {
94
+ (applyToEndTag ? jsdoc.tags : jsdoc.tags.slice(0, -1)).some((tg, tagIdx) => {
76
95
  const lines = [];
77
96
  let currentTag;
78
97
  let tagSourceIdx = 0;
@@ -123,6 +142,52 @@ var _default = (0, _iterateJsdoc.default)(({
123
142
  }
124
143
  return false;
125
144
  });
145
+ if (typeof startLines === 'number') {
146
+ var _description$match, _description$match$;
147
+ const {
148
+ description,
149
+ lastDescriptionLine
150
+ } = utils.getDescription();
151
+ const trailingLines = (_description$match = description.match(/\n+$/u)) === null || _description$match === void 0 ? void 0 : (_description$match$ = _description$match[0]) === null || _description$match$ === void 0 ? void 0 : _description$match$.length;
152
+ const trailingDiff = (trailingLines ?? 0) - startLines;
153
+ if (trailingDiff > 0) {
154
+ utils.reportJSDoc(`Expected only ${startLines} line after block description`, {
155
+ line: lastDescriptionLine - trailingDiff
156
+ }, () => {
157
+ utils.setBlockDescription((info, seedTokens, descLines) => {
158
+ return descLines.slice(0, -trailingDiff).map(desc => {
159
+ return {
160
+ tokens: seedTokens({
161
+ ...info,
162
+ description: desc,
163
+ postDelimiter: desc.trim() ? info.postDelimiter : ''
164
+ })
165
+ };
166
+ });
167
+ });
168
+ });
169
+ } else if (trailingDiff < 0) {
170
+ utils.reportJSDoc(`Expected ${startLines} lines after block description`, {
171
+ line: lastDescriptionLine
172
+ }, () => {
173
+ utils.setBlockDescription((info, seedTokens, descLines) => {
174
+ return [...descLines, ...Array.from({
175
+ length: -trailingDiff
176
+ }, () => {
177
+ return '';
178
+ })].map(desc => {
179
+ return {
180
+ tokens: seedTokens({
181
+ ...info,
182
+ description: desc,
183
+ postDelimiter: desc.trim() ? info.postDelimiter : ''
184
+ })
185
+ };
186
+ });
187
+ });
188
+ });
189
+ }
190
+ }
126
191
  }, {
127
192
  iterateAllJsdocs: true,
128
193
  meta: {
@@ -137,14 +202,25 @@ var _default = (0, _iterateJsdoc.default)(({
137
202
  }, {
138
203
  additionalProperties: false,
139
204
  properties: {
205
+ applyToEndTag: {
206
+ type: 'boolean'
207
+ },
140
208
  count: {
141
209
  type: 'integer'
142
210
  },
143
- dropEndLines: {
144
- type: 'boolean'
211
+ endLines: {
212
+ anyOf: [{
213
+ type: 'integer'
214
+ }, {
215
+ type: 'null'
216
+ }]
145
217
  },
146
- noEndLines: {
147
- type: 'boolean'
218
+ startLines: {
219
+ anyOf: [{
220
+ type: 'integer'
221
+ }, {
222
+ type: 'null'
223
+ }]
148
224
  },
149
225
  tags: {
150
226
  patternProperties: {
@@ -1 +1 @@
1
- {"version":3,"file":"tagLines.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","context","jsdoc","utils","alwaysNever","count","dropEndLines","noEndLines","tags","options","some","tg","tagIdx","lastTag","lastEmpty","reportIndex","idx","tokens","tag","name","type","description","end","source","entries","_tags$lastTag$slice","_tags$lastTag$slice2","includes","slice","lines","empty","length","fixer","removeTag","tagSourceOffset","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","_lines2","_lines","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","patternProperties","exports","module"],"sources":["../../src/rules/tagLines.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n dropEndLines = false,\n noEndLines = false,\n tags = {},\n } = {},\n ] = context.options;\n\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n let lastEmpty = null;\n\n let reportIndex = null;\n for (const [\n idx,\n {\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && [\n 'any', 'always',\n ].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n const empty = !tag && !name && !type && !description;\n if (\n empty && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n if (!end) {\n lastEmpty = empty ? idx : null;\n }\n\n lastTag = tag;\n }\n\n if (dropEndLines && lastEmpty !== null && tagIdx === jsdoc.tags.length - 1) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: lastEmpty,\n });\n };\n\n utils.reportJSDoc(\n 'Expected no trailing lines',\n {\n line: tg.source[lastEmpty].number,\n },\n fixer,\n );\n\n return true;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: reportIndex,\n });\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {\n line: tg.source[0].number + 1,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [\n idx,\n {\n number,\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({\n idx,\n number,\n });\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'any', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n dropEndLines: {\n type: 'boolean',\n },\n noEndLines: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"tagLines.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","context","jsdoc","utils","alwaysNever","count","endLines","startLines","applyToEndTag","tags","options","some","tg","tagIdx","lastTag","lastEmpty","reportIndex","emptyLinesCount","idx","tokens","tag","name","type","description","end","source","entries","_tags$lastTag$slice","_tags$lastTag$slice2","includes","slice","lines","empty","length","lineDiff","fixer","removeTag","tagSourceOffset","reportJSDoc","line","number","addLines","currentTag","tagSourceIdx","splice","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","_lines2","_lines","_description$match","_description$match$","lastDescriptionLine","getDescription","trailingLines","match","trailingDiff","setBlockDescription","info","seedTokens","descLines","map","desc","postDelimiter","trim","Array","from","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","anyOf","patternProperties","exports","module"],"sources":["../../src/rules/tagLines.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n endLines = 0,\n startLines = 0,\n applyToEndTag = true,\n tags = {},\n } = {},\n ] = context.options;\n\n // eslint-disable-next-line complexity -- Temporary\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n let lastEmpty = null;\n\n let reportIndex = null;\n let emptyLinesCount = 0;\n for (const [\n idx,\n {\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && [\n 'any', 'always',\n ].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n const empty = !tag && !name && !type && !description;\n if (\n empty && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n if (!end) {\n if (empty) {\n emptyLinesCount++;\n } else {\n emptyLinesCount = 0;\n }\n\n lastEmpty = empty ? idx : null;\n }\n\n lastTag = tag;\n }\n\n if (\n typeof endLines === 'number' &&\n lastEmpty !== null && tagIdx === jsdoc.tags.length - 1\n ) {\n const lineDiff = endLines - emptyLinesCount;\n\n if (lineDiff < 0) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: lastEmpty + lineDiff + 1,\n });\n };\n\n utils.reportJSDoc(\n `Expected ${endLines} trailing lines`,\n {\n line: tg.source[lastEmpty].number + lineDiff + 1,\n },\n fixer,\n );\n } else if (lineDiff > 0) {\n const fixer = () => {\n utils.addLines(tagIdx, lastEmpty, endLines - emptyLinesCount);\n };\n\n utils.reportJSDoc(\n `Expected ${endLines} trailing lines`,\n {\n line: tg.source[lastEmpty].number,\n },\n fixer,\n );\n }\n\n return true;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTag(tagIdx, {\n tagSourceOffset: reportIndex,\n });\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {\n line: tg.source[0].number + 1,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (applyToEndTag ? jsdoc.tags : jsdoc.tags.slice(0, -1)).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [\n idx,\n {\n number,\n tokens: {\n tag,\n name,\n type,\n description,\n end,\n },\n },\n ] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({\n idx,\n number,\n });\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n if (typeof startLines === 'number') {\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n const trailingLines = description.match(/\\n+$/u)?.[0]?.length;\n const trailingDiff = (trailingLines ?? 0) - startLines;\n if (trailingDiff > 0) {\n utils.reportJSDoc(\n `Expected only ${startLines} line after block description`,\n {\n line: lastDescriptionLine - trailingDiff,\n },\n () => {\n utils.setBlockDescription((info, seedTokens, descLines) => {\n return descLines.slice(0, -trailingDiff).map((desc) => {\n return {\n tokens: seedTokens({\n ...info,\n description: desc,\n postDelimiter: desc.trim() ? info.postDelimiter : '',\n }),\n };\n });\n });\n },\n );\n } else if (trailingDiff < 0) {\n utils.reportJSDoc(\n `Expected ${startLines} lines after block description`,\n {\n line: lastDescriptionLine,\n },\n () => {\n utils.setBlockDescription((info, seedTokens, descLines) => {\n return [\n ...descLines,\n ...Array.from({\n length: -trailingDiff,\n }, () => {\n return '';\n }),\n ].map((desc) => {\n return {\n tokens: seedTokens({\n ...info,\n description: desc,\n postDelimiter: desc.trim() ? info.postDelimiter : '',\n }),\n };\n });\n });\n },\n );\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'any', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n applyToEndTag: {\n type: 'boolean',\n },\n count: {\n type: 'integer',\n },\n endLines: {\n anyOf: [\n {\n type: 'integer',\n },\n {\n type: 'null',\n },\n ],\n },\n startLines: {\n anyOf: [\n {\n type: 'integer',\n },\n {\n type: 'null',\n },\n ],\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -121,5 +121,5 @@
121
121
  "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
122
122
  "test-index": "npm run test-no-cov -- test/rules/index.js"
123
123
  },
124
- "version": "41.1.1"
124
+ "version": "42.0.0"
125
125
  }
@@ -1,71 +0,0 @@
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
- var _default = (0, _iterateJsdoc.default)(({
10
- jsdoc,
11
- report,
12
- context,
13
- jsdocNode,
14
- sourceCode,
15
- indent,
16
- utils
17
- }) => {
18
- let always;
19
- if (!jsdoc.description.trim() || !jsdoc.tags.length) {
20
- return;
21
- }
22
- if (0 in context.options) {
23
- always = context.options[0] === 'always';
24
- } else {
25
- always = true;
26
- }
27
- const {
28
- description,
29
- lastDescriptionLine
30
- } = utils.getDescription();
31
- const descriptionEndsWithANewline = /\n\r?$/u.test(description);
32
- if (always) {
33
- if (!descriptionEndsWithANewline) {
34
- const sourceLines = sourceCode.getText(jsdocNode).split('\n');
35
- report('There must be a newline after the description of the JSDoc block.', fixer => {
36
- // Add the new line
37
- const injectedLine = `${indent} *` + (sourceLines[lastDescriptionLine].endsWith('\r') ? '\r' : '');
38
- sourceLines.splice(lastDescriptionLine + 1, 0, injectedLine);
39
- return fixer.replaceText(jsdocNode, sourceLines.join('\n'));
40
- }, {
41
- line: lastDescriptionLine
42
- });
43
- }
44
- } else if (descriptionEndsWithANewline) {
45
- const sourceLines = sourceCode.getText(jsdocNode).split('\n');
46
- report('There must be no newline after the description of the JSDoc block.', fixer => {
47
- // Remove the extra line
48
- sourceLines.splice(lastDescriptionLine, 1);
49
- return fixer.replaceText(jsdocNode, sourceLines.join('\n'));
50
- }, {
51
- line: lastDescriptionLine
52
- });
53
- }
54
- }, {
55
- iterateAllJsdocs: true,
56
- meta: {
57
- docs: {
58
- description: 'Enforces a consistent padding of the block description.',
59
- url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description'
60
- },
61
- fixable: 'whitespace',
62
- schema: [{
63
- enum: ['always', 'never'],
64
- type: 'string'
65
- }],
66
- type: 'layout'
67
- }
68
- });
69
- exports.default = _default;
70
- module.exports = exports.default;
71
- //# sourceMappingURL=newlineAfterDescription.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"newlineAfterDescription.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","_default","iterateJsdoc","jsdoc","report","context","jsdocNode","sourceCode","indent","utils","always","description","trim","tags","length","options","lastDescriptionLine","getDescription","descriptionEndsWithANewline","test","sourceLines","getText","split","fixer","injectedLine","endsWith","splice","replaceText","join","line","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","exports","module"],"sources":["../../src/rules/newlineAfterDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n jsdocNode,\n sourceCode,\n indent,\n utils,\n}) => {\n let always;\n\n if (!jsdoc.description.trim() || !jsdoc.tags.length) {\n return;\n }\n\n if (0 in context.options) {\n always = context.options[0] === 'always';\n } else {\n always = true;\n }\n\n const {\n description,\n lastDescriptionLine,\n } = utils.getDescription();\n const descriptionEndsWithANewline = (/\\n\\r?$/u).test(description);\n\n if (always) {\n if (!descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n report('There must be a newline after the description of the JSDoc block.', (fixer) => {\n // Add the new line\n const injectedLine = `${indent} *` +\n (sourceLines[lastDescriptionLine].endsWith('\\r') ? '\\r' : '');\n sourceLines.splice(lastDescriptionLine + 1, 0, injectedLine);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n } else if (descriptionEndsWithANewline) {\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n report('There must be no newline after the description of the JSDoc block.', (fixer) => {\n // Remove the extra line\n sourceLines.splice(lastDescriptionLine, 1);\n\n return fixer.replaceText(jsdocNode, sourceLines.join('\\n'));\n }, {\n line: lastDescriptionLine,\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces a consistent padding of the block description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-newline-after-description',\n },\n fixable: 'whitespace',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n ],\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;AAAA,IAAAG,QAAA,GAE5B,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,MAAM;EACNC,OAAO;EACPC,SAAS;EACTC,UAAU;EACVC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,IAAIC,MAAM;EAEV,IAAI,CAACP,KAAK,CAACQ,WAAW,CAACC,IAAI,EAAE,IAAI,CAACT,KAAK,CAACU,IAAI,CAACC,MAAM,EAAE;IACnD;EACF;EAEA,IAAI,CAAC,IAAIT,OAAO,CAACU,OAAO,EAAE;IACxBL,MAAM,GAAGL,OAAO,CAACU,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;EAC1C,CAAC,MAAM;IACLL,MAAM,GAAG,IAAI;EACf;EAEA,MAAM;IACJC,WAAW;IACXK;EACF,CAAC,GAAGP,KAAK,CAACQ,cAAc,EAAE;EAC1B,MAAMC,2BAA2B,GAAI,SAAS,CAAEC,IAAI,CAACR,WAAW,CAAC;EAEjE,IAAID,MAAM,EAAE;IACV,IAAI,CAACQ,2BAA2B,EAAE;MAChC,MAAME,WAAW,GAAGb,UAAU,CAACc,OAAO,CAACf,SAAS,CAAC,CAACgB,KAAK,CAAC,IAAI,CAAC;MAE7DlB,MAAM,CAAC,mEAAmE,EAAGmB,KAAK,IAAK;QACrF;QACA,MAAMC,YAAY,GAAI,GAAEhB,MAAO,IAAG,IAC/BY,WAAW,CAACJ,mBAAmB,CAAC,CAACS,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC/DL,WAAW,CAACM,MAAM,CAACV,mBAAmB,GAAG,CAAC,EAAE,CAAC,EAAEQ,YAAY,CAAC;QAE5D,OAAOD,KAAK,CAACI,WAAW,CAACrB,SAAS,EAAEc,WAAW,CAACQ,IAAI,CAAC,IAAI,CAAC,CAAC;MAC7D,CAAC,EAAE;QACDC,IAAI,EAAEb;MACR,CAAC,CAAC;IACJ;EACF,CAAC,MAAM,IAAIE,2BAA2B,EAAE;IACtC,MAAME,WAAW,GAAGb,UAAU,CAACc,OAAO,CAACf,SAAS,CAAC,CAACgB,KAAK,CAAC,IAAI,CAAC;IAC7DlB,MAAM,CAAC,oEAAoE,EAAGmB,KAAK,IAAK;MACtF;MACAH,WAAW,CAACM,MAAM,CAACV,mBAAmB,EAAE,CAAC,CAAC;MAE1C,OAAOO,KAAK,CAACI,WAAW,CAACrB,SAAS,EAAEc,WAAW,CAACQ,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC,EAAE;MACDC,IAAI,EAAEb;IACR,CAAC,CAAC;EACJ;AACF,CAAC,EAAE;EACDc,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJrB,WAAW,EAAE,yDAAyD;MACtEsB,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,YAAY;IACrBC,MAAM,EAAE,CACN;MACEC,IAAI,EAAE,CACJ,QAAQ,EAAE,OAAO,CAClB;MACDC,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAC,OAAA,CAAAtC,OAAA,GAAAC,QAAA;AAAAsC,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAAtC,OAAA"}