eslint-plugin-jsdoc 61.3.0 → 61.4.1

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.cjs CHANGED
@@ -62,6 +62,7 @@ var _requireProperty = _interopRequireDefault(require("./rules/requireProperty.c
62
62
  var _requirePropertyDescription = _interopRequireDefault(require("./rules/requirePropertyDescription.cjs"));
63
63
  var _requirePropertyName = _interopRequireDefault(require("./rules/requirePropertyName.cjs"));
64
64
  var _requirePropertyType = _interopRequireDefault(require("./rules/requirePropertyType.cjs"));
65
+ var _requireRejects = _interopRequireDefault(require("./rules/requireRejects.cjs"));
65
66
  var _requireReturns = _interopRequireDefault(require("./rules/requireReturns.cjs"));
66
67
  var _requireReturnsCheck = _interopRequireDefault(require("./rules/requireReturnsCheck.cjs"));
67
68
  var _requireReturnsDescription = _interopRequireDefault(require("./rules/requireReturnsDescription.cjs"));
@@ -195,6 +196,7 @@ index.rules = {
195
196
  'require-property-description': _requirePropertyDescription.default,
196
197
  'require-property-name': _requirePropertyName.default,
197
198
  'require-property-type': _requirePropertyType.default,
199
+ 'require-rejects': _requireRejects.default,
198
200
  'require-returns': _requireReturns.default,
199
201
  'require-returns-check': _requireReturnsCheck.default,
200
202
  'require-returns-description': _requireReturnsDescription.default,
@@ -326,6 +328,7 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
326
328
  'jsdoc/require-property-description': warnOrError,
327
329
  'jsdoc/require-property-name': warnOrError,
328
330
  'jsdoc/require-property-type': warnOrError,
331
+ 'jsdoc/require-rejects': 'off',
329
332
  'jsdoc/require-returns': warnOrError,
330
333
  'jsdoc/require-returns-check': warnOrError,
331
334
  'jsdoc/require-returns-description': warnOrError,
@@ -695,6 +698,9 @@ const jsdoc = function (cfg) {
695
698
  structuredTags: {
696
699
  next: {
697
700
  required: ['type']
701
+ },
702
+ rejects: {
703
+ required: ['type']
698
704
  }
699
705
  }
700
706
  } : {})
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["_objectDeepMerge","require","_buildForbidRuleDefinition","_buildRejectOrPreferRuleDefinition","_getJsdocProcessorPlugin","_checkAccess","_interopRequireDefault","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_escapeInlineTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_preferImportTag","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTags","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_tsMethodSignatureStyle","_tsNoEmptyObjectType","_tsNoUnnecessaryTemplateExpression","_tsPreferFunctionType","_typeFormatting","_validTypes","e","__esModule","default","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","escapeInlineTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","preferImportTag","buildRejectOrPreferRuleDefinition","description","overrideSettings","message","replacement","unifyParentAndChildTypeChecks","any","url","Function","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","buildForbidRuleDefinition","contexts","comment","context","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTags","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","tsMethodSignatureStyle","tsNoEmptyObjectType","tsNoUnnecessaryTemplateExpression","tsPreferFunctionType","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","Object","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default","exports","cfg","outputConfig","TypeError","basePath","ignores","language","languageOptions","linterOptions","extraRuleDefinitions","forbid","contextName","entries","preferTypes","typeName","settings","mergeSettings","merge","includes","structuredTags","next","required"],"sources":["../src/index.js"],"sourcesContent":["/* AUTO-GENERATED BY build SCRIPT */\n/* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */\nimport {\n merge,\n} from 'object-deep-merge';\n\nimport {\n buildForbidRuleDefinition,\n} from './buildForbidRuleDefinition.js';\nimport {\n buildRejectOrPreferRuleDefinition,\n} from './buildRejectOrPreferRuleDefinition.js';\nimport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport escapeInlineTags from './rules/escapeInlineTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport preferImportTag from './rules/preferImportTag.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTags from './rules/requireTags.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport tsMethodSignatureStyle from './rules/tsMethodSignatureStyle.js';\nimport tsNoEmptyObjectType from './rules/tsNoEmptyObjectType.js';\nimport tsNoUnnecessaryTemplateExpression from './rules/tsNoUnnecessaryTemplateExpression.js';\nimport tsPreferFunctionType from './rules/tsPreferFunctionType.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<\n * `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config\n * > &\n * Record<\n * \"examples\"|\"default-expressions\"|\"examples-and-default-expressions\",\n * import('eslint').Linter.Config[]\n * > &\n * Record<\"flat/recommended-mixed\", import('eslint').Linter.Config[]>\n * }}\n */\nconst index = {};\nindex.configs = {};\nindex.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-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'escape-inline-tags': escapeInlineTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\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-blank-blocks': noBlankBlocks,\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 'prefer-import-tag': preferImportTag,\n 'reject-any-type': buildRejectOrPreferRuleDefinition({\n description: 'Reports use of `any` or `*` type',\n overrideSettings: {\n '*': {\n message: 'Prefer a more specific type to `*`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n any: {\n message: 'Prefer a more specific type to `any`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n },\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-any-type.md#repos-sticky-header',\n }),\n 'reject-function-type': buildRejectOrPreferRuleDefinition({\n description: 'Reports use of `Function` type',\n overrideSettings: {\n Function: {\n message: 'Prefer a more specific type to `Function`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n },\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-function-type.md#repos-sticky-header',\n }),\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-next-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([name!=\"\"]):not([description!=\"\"]))',\n context: 'any',\n message: '@next should have a description',\n },\n ],\n description: 'Requires a description for `@next` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-description.md#repos-sticky-header',\n }),\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for `@next` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\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-tags': requireTags,\n 'require-template': requireTemplate,\n 'require-template-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=template]:not([description!=\"\"]))',\n context: 'any',\n message: '@template should have a description',\n },\n ],\n description: 'Requires a description for `@template` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template-description.md#repos-sticky-header',\n }),\n 'require-throws': requireThrows,\n 'require-throws-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^(?:throws|exception)$/]:not([description!=\"\"]))',\n context: 'any',\n message: '@throws should have a description',\n },\n ],\n description: 'Requires a description for `@throws` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-description.md#repos-sticky-header',\n }),\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^(?:throws|exception)$/]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for `@throws` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^yields?$/]:not([name!=\"\"]):not([description!=\"\"]))',\n context: 'any',\n message: '@yields should have a description',\n },\n ],\n description: 'Requires a description for `@yields` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-description.md#repos-sticky-header',\n }),\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^yields?$/]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for `@yields` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'ts-method-signature-style': tsMethodSignatureStyle,\n 'ts-no-empty-object-type': tsNoEmptyObjectType,\n 'ts-no-unnecessary-template-expression': tsNoUnnecessaryTemplateExpression,\n 'ts-prefer-function-type': tsPreferFunctionType,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\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-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/escape-inline-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': '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-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\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/prefer-import-tag': 'off',\n 'jsdoc/reject-any-type': warnOrError,\n 'jsdoc/reject-function-type': 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-next-description': 'off',\n 'jsdoc/require-next-type': 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-tags': 'off',\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-template-description': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-description': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-description': 'off',\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/ts-method-signature-style': 'off',\n 'jsdoc/ts-no-empty-object-type': warnOrError,\n 'jsdoc/ts-no-unnecessary-template-expression': 'off',\n 'jsdoc/ts-prefer-function-type': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/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/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/escape-inline-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\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');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n '@stylistic/eol-last': 0,\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n '@stylistic/no-multiple-empty-lines': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n '@stylistic/padded-blocks': 0,\n\n '@typescript-eslint/no-unused-vars': 0,\n\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // See import/no-unresolved\n 'n/no-missing-import': 0,\n\n 'n/no-missing-require': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n '@stylistic/quotes': [\n 'error', 'double',\n ],\n '@stylistic/semi': [\n 'error', 'never',\n ],\n '@typescript-eslint/no-unused-expressions': 0,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nindex.configs['flat/recommended-mixed'] = [\n {\n ...index.configs['flat/recommended-typescript-flavor'],\n files: [\n '**/*.{js,jsx,cjs,mjs}',\n ],\n },\n {\n ...index.configs['flat/recommended-typescript'],\n files: [\n '**/*.{ts,tsx,cts,mts}',\n ],\n },\n];\n\nexport default index;\n\n/**\n * @type {((\n * cfg?: import('eslint').Linter.Config & {\n * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * mergeSettings?: boolean,\n * settings?: Partial<import('./iterateJsdoc.js').Settings>,\n * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},\n * extraRuleDefinitions?: {\n * forbid?: {\n * [contextName: string]: {\n * description?: string,\n * url?: string,\n * contexts: (string|{\n * message: string,\n * context: string,\n * comment: string\n * })[]\n * }\n * },\n * preferTypes?: {\n * [typeName: string]: {\n * description: string,\n * overrideSettings: {\n * [typeNodeName: string]: {\n * message: string,\n * replacement?: false|string,\n * unifyParentAndChildTypeChecks?: boolean,\n * }\n * },\n * url: string,\n * }\n * }\n * }\n * }\n * ) => import('eslint').Linter.Config)}\n */\nexport const jsdoc = function (cfg) {\n /** @type {import('eslint').Linter.Config} */\n let outputConfig = {\n plugins: {\n jsdoc: index,\n },\n };\n\n if (cfg) {\n if (cfg.config) {\n // @ts-expect-error Security check\n if (cfg.config === '__proto__') {\n throw new TypeError('Disallowed config value');\n }\n\n outputConfig = /** @type {import('eslint').Linter.Config} */ (index.configs[cfg.config]);\n }\n\n if (cfg.rules) {\n outputConfig.rules = {\n ...outputConfig.rules,\n ...cfg.rules,\n };\n }\n\n if (cfg.plugins) {\n outputConfig.plugins = {\n ...outputConfig.plugins,\n ...cfg.plugins,\n };\n }\n\n if (cfg.name) {\n outputConfig.name = cfg.name;\n }\n\n if (cfg.basePath) {\n outputConfig.basePath = cfg.basePath;\n }\n\n if (cfg.files) {\n outputConfig.files = cfg.files;\n }\n\n if (cfg.ignores) {\n outputConfig.ignores = cfg.ignores;\n }\n\n if (cfg.language) {\n outputConfig.language = cfg.language;\n }\n\n if (cfg.languageOptions) {\n outputConfig.languageOptions = cfg.languageOptions;\n }\n\n if (cfg.linterOptions) {\n outputConfig.linterOptions = cfg.linterOptions;\n }\n\n if (cfg.processor) {\n outputConfig.processor = cfg.processor;\n }\n\n if (cfg.extraRuleDefinitions) {\n if (!outputConfig.plugins?.jsdoc?.rules) {\n throw new Error('JSDoc plugin required for `extraRuleDefinitions`');\n }\n\n if (cfg.extraRuleDefinitions.forbid) {\n for (const [\n contextName,\n {\n contexts,\n description,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.forbid)) {\n outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] =\n buildForbidRuleDefinition({\n contextName,\n contexts,\n description,\n url,\n });\n }\n }\n\n if (cfg.extraRuleDefinitions.preferTypes) {\n for (const [\n typeName,\n {\n description,\n overrideSettings,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.preferTypes)) {\n outputConfig.plugins.jsdoc.rules[`prefer-type-${typeName}`] =\n buildRejectOrPreferRuleDefinition({\n description,\n overrideSettings,\n typeName,\n url,\n });\n }\n }\n }\n }\n\n outputConfig.settings = {\n jsdoc: cfg?.mergeSettings === false ?\n cfg.settings :\n merge(\n {},\n cfg?.settings ?? {},\n cfg?.config?.includes('recommended') ?\n {\n // We may need to drop these for \"typescript\" (non-\"flavor\") configs,\n // if support is later added: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n structuredTags: {\n next: {\n required: [\n 'type',\n ],\n },\n },\n } :\n {},\n ),\n };\n\n return outputConfig;\n};\n\nexport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.cjs","names":["_objectDeepMerge","require","_buildForbidRuleDefinition","_buildRejectOrPreferRuleDefinition","_getJsdocProcessorPlugin","_checkAccess","_interopRequireDefault","_checkAlignment","_checkExamples","_checkIndentation","_checkLineAlignment","_checkParamNames","_checkPropertyNames","_checkSyntax","_checkTagNames","_checkTemplateNames","_checkTypes","_checkValues","_convertToJsdocComments","_emptyTags","_escapeInlineTags","_implementsOnClasses","_importsAsDependencies","_informativeDocs","_linesBeforeBlock","_matchDescription","_matchName","_multilineBlocks","_noBadBlocks","_noBlankBlockDescriptions","_noBlankBlocks","_noDefaults","_noMissingSyntax","_noMultiAsterisks","_noRestrictedSyntax","_noTypes","_noUndefinedTypes","_preferImportTag","_requireAsteriskPrefix","_requireDescription","_requireDescriptionCompleteSentence","_requireExample","_requireFileOverview","_requireHyphenBeforeParamDescription","_requireJsdoc","_requireParam","_requireParamDescription","_requireParamName","_requireParamType","_requireProperty","_requirePropertyDescription","_requirePropertyName","_requirePropertyType","_requireRejects","_requireReturns","_requireReturnsCheck","_requireReturnsDescription","_requireReturnsType","_requireTags","_requireTemplate","_requireThrows","_requireYields","_requireYieldsCheck","_sortTags","_tagLines","_textEscaping","_tsMethodSignatureStyle","_tsNoEmptyObjectType","_tsNoUnnecessaryTemplateExpression","_tsPreferFunctionType","_typeFormatting","_validTypes","e","__esModule","default","index","configs","rules","checkAccess","checkAlignment","checkExamples","checkIndentation","checkLineAlignment","checkParamNames","checkPropertyNames","checkSyntax","checkTagNames","checkTemplateNames","checkTypes","checkValues","convertToJsdocComments","emptyTags","escapeInlineTags","implementsOnClasses","importsAsDependencies","informativeDocs","linesBeforeBlock","matchDescription","matchName","multilineBlocks","noBadBlocks","noBlankBlockDescriptions","noBlankBlocks","noDefaults","noMissingSyntax","noMultiAsterisks","noRestrictedSyntax","noTypes","noUndefinedTypes","preferImportTag","buildRejectOrPreferRuleDefinition","description","overrideSettings","message","replacement","unifyParentAndChildTypeChecks","any","url","Function","requireAsteriskPrefix","requireDescription","requireDescriptionCompleteSentence","requireExample","requireFileOverview","requireHyphenBeforeParamDescription","requireJsdoc","buildForbidRuleDefinition","contexts","comment","context","requireParam","requireParamDescription","requireParamName","requireParamType","requireProperty","requirePropertyDescription","requirePropertyName","requirePropertyType","requireRejects","requireReturns","requireReturnsCheck","requireReturnsDescription","requireReturnsType","requireTags","requireTemplate","requireThrows","requireYields","requireYieldsCheck","sortTags","tagLines","textEscaping","tsMethodSignatureStyle","tsNoEmptyObjectType","tsNoUnnecessaryTemplateExpression","tsPreferFunctionType","typeFormatting","validTypes","createRecommendedRuleset","warnOrError","flatName","name","plugins","jsdoc","createRecommendedTypeScriptRuleset","ruleset","typed","createRecommendedTypeScriptFlavorRuleset","createStandaloneRulesetFactory","ruleNames","Object","fromEntries","map","ruleName","slice","contentsRules","escapeHTML","createContentsTypescriptRuleset","createContentsTypescriptFlavorRuleset","logicalRules","createLogicalTypescriptRuleset","createLogicalTypescriptFlavorRuleset","requirementsRules","createRequirementsTypeScriptRuleset","createRequirementsTypeScriptFlavorRuleset","stylisticRules","createStylisticTypeScriptRuleset","createStylisticTypeScriptFlavorRuleset","Error","recommended","examples","files","getJsdocProcessorPlugin","processor","checkDefaults","checkParams","checkProperties","quotes","semi","strict","config","_default","exports","cfg","outputConfig","TypeError","basePath","ignores","language","languageOptions","linterOptions","extraRuleDefinitions","forbid","contextName","entries","preferTypes","typeName","settings","mergeSettings","merge","includes","structuredTags","next","required","rejects"],"sources":["../src/index.js"],"sourcesContent":["/* AUTO-GENERATED BY build SCRIPT */\n/* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */\nimport {\n merge,\n} from 'object-deep-merge';\n\nimport {\n buildForbidRuleDefinition,\n} from './buildForbidRuleDefinition.js';\nimport {\n buildRejectOrPreferRuleDefinition,\n} from './buildRejectOrPreferRuleDefinition.js';\nimport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\nimport checkAccess from './rules/checkAccess.js';\nimport checkAlignment from './rules/checkAlignment.js';\nimport checkExamples from './rules/checkExamples.js';\nimport checkIndentation from './rules/checkIndentation.js';\nimport checkLineAlignment from './rules/checkLineAlignment.js';\nimport checkParamNames from './rules/checkParamNames.js';\nimport checkPropertyNames from './rules/checkPropertyNames.js';\nimport checkSyntax from './rules/checkSyntax.js';\nimport checkTagNames from './rules/checkTagNames.js';\nimport checkTemplateNames from './rules/checkTemplateNames.js';\nimport checkTypes from './rules/checkTypes.js';\nimport checkValues from './rules/checkValues.js';\nimport convertToJsdocComments from './rules/convertToJsdocComments.js';\nimport emptyTags from './rules/emptyTags.js';\nimport escapeInlineTags from './rules/escapeInlineTags.js';\nimport implementsOnClasses from './rules/implementsOnClasses.js';\nimport importsAsDependencies from './rules/importsAsDependencies.js';\nimport informativeDocs from './rules/informativeDocs.js';\nimport linesBeforeBlock from './rules/linesBeforeBlock.js';\nimport matchDescription from './rules/matchDescription.js';\nimport matchName from './rules/matchName.js';\nimport multilineBlocks from './rules/multilineBlocks.js';\nimport noBadBlocks from './rules/noBadBlocks.js';\nimport noBlankBlockDescriptions from './rules/noBlankBlockDescriptions.js';\nimport noBlankBlocks from './rules/noBlankBlocks.js';\nimport noDefaults from './rules/noDefaults.js';\nimport noMissingSyntax from './rules/noMissingSyntax.js';\nimport noMultiAsterisks from './rules/noMultiAsterisks.js';\nimport noRestrictedSyntax from './rules/noRestrictedSyntax.js';\nimport noTypes from './rules/noTypes.js';\nimport noUndefinedTypes from './rules/noUndefinedTypes.js';\nimport preferImportTag from './rules/preferImportTag.js';\nimport requireAsteriskPrefix from './rules/requireAsteriskPrefix.js';\nimport requireDescription from './rules/requireDescription.js';\nimport requireDescriptionCompleteSentence from './rules/requireDescriptionCompleteSentence.js';\nimport requireExample from './rules/requireExample.js';\nimport requireFileOverview from './rules/requireFileOverview.js';\nimport requireHyphenBeforeParamDescription from './rules/requireHyphenBeforeParamDescription.js';\nimport requireJsdoc from './rules/requireJsdoc.js';\nimport requireParam from './rules/requireParam.js';\nimport requireParamDescription from './rules/requireParamDescription.js';\nimport requireParamName from './rules/requireParamName.js';\nimport requireParamType from './rules/requireParamType.js';\nimport requireProperty from './rules/requireProperty.js';\nimport requirePropertyDescription from './rules/requirePropertyDescription.js';\nimport requirePropertyName from './rules/requirePropertyName.js';\nimport requirePropertyType from './rules/requirePropertyType.js';\nimport requireRejects from './rules/requireRejects.js';\nimport requireReturns from './rules/requireReturns.js';\nimport requireReturnsCheck from './rules/requireReturnsCheck.js';\nimport requireReturnsDescription from './rules/requireReturnsDescription.js';\nimport requireReturnsType from './rules/requireReturnsType.js';\nimport requireTags from './rules/requireTags.js';\nimport requireTemplate from './rules/requireTemplate.js';\nimport requireThrows from './rules/requireThrows.js';\nimport requireYields from './rules/requireYields.js';\nimport requireYieldsCheck from './rules/requireYieldsCheck.js';\nimport sortTags from './rules/sortTags.js';\nimport tagLines from './rules/tagLines.js';\nimport textEscaping from './rules/textEscaping.js';\nimport tsMethodSignatureStyle from './rules/tsMethodSignatureStyle.js';\nimport tsNoEmptyObjectType from './rules/tsNoEmptyObjectType.js';\nimport tsNoUnnecessaryTemplateExpression from './rules/tsNoUnnecessaryTemplateExpression.js';\nimport tsPreferFunctionType from './rules/tsPreferFunctionType.js';\nimport typeFormatting from './rules/typeFormatting.js';\nimport validTypes from './rules/validTypes.js';\n\n/**\n * @typedef {\"recommended\" | \"stylistic\" | \"contents\" | \"logical\" | \"requirements\"} ConfigGroups\n * @typedef {\"\" | \"-typescript\" | \"-typescript-flavor\"} ConfigVariants\n * @typedef {\"\" | \"-error\"} ErrorLevelVariants\n * @type {import('eslint').ESLint.Plugin & {\n * configs: Record<\n * `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * import('eslint').Linter.Config\n * > &\n * Record<\n * \"examples\"|\"default-expressions\"|\"examples-and-default-expressions\",\n * import('eslint').Linter.Config[]\n * > &\n * Record<\"flat/recommended-mixed\", import('eslint').Linter.Config[]>\n * }}\n */\nconst index = {};\nindex.configs = {};\nindex.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-template-names': checkTemplateNames,\n 'check-types': checkTypes,\n 'check-values': checkValues,\n 'convert-to-jsdoc-comments': convertToJsdocComments,\n 'empty-tags': emptyTags,\n 'escape-inline-tags': escapeInlineTags,\n 'implements-on-classes': implementsOnClasses,\n 'imports-as-dependencies': importsAsDependencies,\n 'informative-docs': informativeDocs,\n 'lines-before-block': linesBeforeBlock,\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-blank-blocks': noBlankBlocks,\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 'prefer-import-tag': preferImportTag,\n 'reject-any-type': buildRejectOrPreferRuleDefinition({\n description: 'Reports use of `any` or `*` type',\n overrideSettings: {\n '*': {\n message: 'Prefer a more specific type to `*`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n any: {\n message: 'Prefer a more specific type to `any`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n },\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-any-type.md#repos-sticky-header',\n }),\n 'reject-function-type': buildRejectOrPreferRuleDefinition({\n description: 'Reports use of `Function` type',\n overrideSettings: {\n Function: {\n message: 'Prefer a more specific type to `Function`',\n replacement: false,\n unifyParentAndChildTypeChecks: true,\n },\n },\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/reject-function-type.md#repos-sticky-header',\n }),\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-next-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([name!=\"\"]):not([description!=\"\"]))',\n context: 'any',\n message: '@next should have a description',\n },\n ],\n description: 'Requires a description for `@next` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-description.md#repos-sticky-header',\n }),\n 'require-next-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=next]:not([parsedType.type]))',\n context: 'any',\n message: '@next should have a type',\n },\n ],\n description: 'Requires a type for `@next` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-next-type.md#repos-sticky-header',\n }),\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-rejects': requireRejects,\n 'require-returns': requireReturns,\n 'require-returns-check': requireReturnsCheck,\n 'require-returns-description': requireReturnsDescription,\n 'require-returns-type': requireReturnsType,\n 'require-tags': requireTags,\n 'require-template': requireTemplate,\n 'require-template-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=template]:not([description!=\"\"]))',\n context: 'any',\n message: '@template should have a description',\n },\n ],\n description: 'Requires a description for `@template` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-template-description.md#repos-sticky-header',\n }),\n 'require-throws': requireThrows,\n 'require-throws-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^(?:throws|exception)$/]:not([description!=\"\"]))',\n context: 'any',\n message: '@throws should have a description',\n },\n ],\n description: 'Requires a description for `@throws` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-description.md#repos-sticky-header',\n }),\n 'require-throws-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^(?:throws|exception)$/]:not([parsedType.type]))',\n context: 'any',\n message: '@throws should have a type',\n },\n ],\n description: 'Requires a type for `@throws` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-throws-type.md#repos-sticky-header',\n }),\n 'require-yields': requireYields,\n 'require-yields-check': requireYieldsCheck,\n 'require-yields-description': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^yields?$/]:not([name!=\"\"]):not([description!=\"\"]))',\n context: 'any',\n message: '@yields should have a description',\n },\n ],\n description: 'Requires a description for `@yields` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-description.md#repos-sticky-header',\n }),\n 'require-yields-type': buildForbidRuleDefinition({\n contexts: [\n {\n comment: 'JsdocBlock:has(JsdocTag[tag=/^yields?$/]:not([parsedType.type]))',\n context: 'any',\n message: '@yields should have a type',\n },\n ],\n description: 'Requires a type for `@yields` tags',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-yields-type.md#repos-sticky-header',\n }),\n 'sort-tags': sortTags,\n 'tag-lines': tagLines,\n 'text-escaping': textEscaping,\n 'ts-method-signature-style': tsMethodSignatureStyle,\n 'ts-no-empty-object-type': tsNoEmptyObjectType,\n 'ts-no-unnecessary-template-expression': tsNoUnnecessaryTemplateExpression,\n 'ts-prefer-function-type': tsPreferFunctionType,\n 'type-formatting': typeFormatting,\n 'valid-types': validTypes,\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedRuleset = (warnOrError, flatName) => {\n return {\n ...(flatName ? {\n name: 'jsdoc/' + flatName,\n } : {}),\n // @ts-expect-error ESLint 8 plugins\n plugins:\n flatName ? {\n jsdoc: index,\n } : [\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-template-names': 'off',\n 'jsdoc/check-types': warnOrError,\n 'jsdoc/check-values': warnOrError,\n 'jsdoc/convert-to-jsdoc-comments': 'off',\n 'jsdoc/empty-tags': warnOrError,\n 'jsdoc/escape-inline-tags': warnOrError,\n 'jsdoc/implements-on-classes': warnOrError,\n 'jsdoc/imports-as-dependencies': 'off',\n 'jsdoc/informative-docs': 'off',\n 'jsdoc/lines-before-block': '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-blank-blocks': 'off',\n 'jsdoc/no-defaults': warnOrError,\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/prefer-import-tag': 'off',\n 'jsdoc/reject-any-type': warnOrError,\n 'jsdoc/reject-function-type': 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-next-description': 'off',\n 'jsdoc/require-next-type': 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-rejects': 'off',\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-tags': 'off',\n 'jsdoc/require-template': 'off',\n 'jsdoc/require-template-description': 'off',\n 'jsdoc/require-throws': 'off',\n 'jsdoc/require-throws-description': 'off',\n 'jsdoc/require-throws-type': warnOrError,\n 'jsdoc/require-yields': warnOrError,\n 'jsdoc/require-yields-check': warnOrError,\n 'jsdoc/require-yields-description': 'off',\n 'jsdoc/require-yields-type': warnOrError,\n 'jsdoc/sort-tags': 'off',\n 'jsdoc/tag-lines': warnOrError,\n 'jsdoc/text-escaping': 'off',\n 'jsdoc/ts-method-signature-style': 'off',\n 'jsdoc/ts-no-empty-object-type': warnOrError,\n 'jsdoc/ts-no-unnecessary-template-expression': 'off',\n 'jsdoc/ts-prefer-function-type': 'off',\n 'jsdoc/type-formatting': 'off',\n 'jsdoc/valid-types': warnOrError,\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/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/no-undefined-types': 'off',\n 'jsdoc/require-param-type': 'off',\n 'jsdoc/require-property-type': 'off',\n 'jsdoc/require-returns-type': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\nconst createRecommendedTypeScriptFlavorRuleset = (warnOrError, flatName) => {\n const ruleset = createRecommendedRuleset(warnOrError, flatName);\n\n return {\n ...ruleset,\n rules: {\n ...ruleset.rules,\n /* eslint-disable @stylistic/indent -- Extra indent to avoid use by auto-rule-editing */\n 'jsdoc/no-undefined-types': 'off',\n /* eslint-enable @stylistic/indent */\n },\n };\n};\n\n/**\n * @param {(string | unknown[])[]} ruleNames\n */\nconst createStandaloneRulesetFactory = (ruleNames) => {\n /**\n * @param {\"warn\"|\"error\"} warnOrError\n * @param {string} [flatName]\n * @returns {import('eslint').Linter.Config}\n */\n return (warnOrError, flatName) => {\n return {\n name: 'jsdoc/' + flatName,\n plugins: {\n jsdoc: index,\n },\n rules: Object.fromEntries(\n ruleNames.map(\n (ruleName) => {\n return (typeof ruleName === 'string' ?\n [\n ruleName, warnOrError,\n ] :\n [\n ruleName[0], [\n warnOrError, ...ruleName.slice(1),\n ],\n ]);\n },\n ),\n ),\n };\n };\n};\n\nconst contentsRules = [\n 'jsdoc/informative-docs',\n 'jsdoc/match-description',\n 'jsdoc/no-blank-block-descriptions',\n 'jsdoc/no-blank-blocks',\n [\n 'jsdoc/text-escaping', {\n escapeHTML: true,\n },\n ],\n];\n\nconst createContentsTypescriptRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst createContentsTypescriptFlavorRuleset = createStandaloneRulesetFactory(contentsRules);\n\nconst logicalRules = [\n 'jsdoc/check-access',\n 'jsdoc/check-param-names',\n 'jsdoc/check-property-names',\n 'jsdoc/check-syntax',\n 'jsdoc/check-tag-names',\n 'jsdoc/check-template-names',\n 'jsdoc/check-types',\n 'jsdoc/check-values',\n 'jsdoc/empty-tags',\n 'jsdoc/escape-inline-tags',\n 'jsdoc/implements-on-classes',\n 'jsdoc/require-returns-check',\n 'jsdoc/require-yields-check',\n 'jsdoc/no-bad-blocks',\n 'jsdoc/no-defaults',\n 'jsdoc/no-types',\n 'jsdoc/no-undefined-types',\n 'jsdoc/valid-types',\n];\n\nconst createLogicalTypescriptRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst createLogicalTypescriptFlavorRuleset = createStandaloneRulesetFactory(logicalRules);\n\nconst requirementsRules = [\n 'jsdoc/require-example',\n 'jsdoc/require-jsdoc',\n 'jsdoc/require-next-type',\n 'jsdoc/require-param',\n 'jsdoc/require-param-description',\n 'jsdoc/require-param-name',\n 'jsdoc/require-property',\n 'jsdoc/require-property-description',\n 'jsdoc/require-property-name',\n 'jsdoc/require-returns',\n 'jsdoc/require-returns-description',\n 'jsdoc/require-throws-type',\n 'jsdoc/require-yields',\n 'jsdoc/require-yields-type',\n];\n\nconst createRequirementsTypeScriptRuleset = createStandaloneRulesetFactory(requirementsRules);\n\nconst createRequirementsTypeScriptFlavorRuleset = createStandaloneRulesetFactory([\n ...requirementsRules,\n 'jsdoc/require-param-type',\n 'jsdoc/require-property-type',\n 'jsdoc/require-returns-type',\n 'jsdoc/require-template',\n]);\n\nconst stylisticRules = [\n 'jsdoc/check-alignment',\n 'jsdoc/check-line-alignment',\n 'jsdoc/lines-before-block',\n 'jsdoc/multiline-blocks',\n 'jsdoc/no-multi-asterisks',\n 'jsdoc/require-asterisk-prefix',\n [\n 'jsdoc/require-hyphen-before-param-description', 'never',\n ],\n 'jsdoc/tag-lines',\n];\n\nconst createStylisticTypeScriptRuleset = createStandaloneRulesetFactory(stylisticRules);\n\nconst createStylisticTypeScriptFlavorRuleset = createStandaloneRulesetFactory(stylisticRules);\n\n/* c8 ignore next 3 -- TS */\nif (!index.configs) {\n throw new Error('TypeScript guard');\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');\nindex.configs['recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn');\nindex.configs['recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error');\n\nindex.configs['flat/recommended'] = createRecommendedRuleset('warn', 'flat/recommended');\nindex.configs['flat/recommended-error'] = createRecommendedRuleset('error', 'flat/recommended-error');\nindex.configs['flat/recommended-typescript'] = createRecommendedTypeScriptRuleset('warn', 'flat/recommended-typescript');\nindex.configs['flat/recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error', 'flat/recommended-typescript-error');\nindex.configs['flat/recommended-typescript-flavor'] = createRecommendedTypeScriptFlavorRuleset('warn', 'flat/recommended-typescript-flavor');\nindex.configs['flat/recommended-typescript-flavor-error'] = createRecommendedTypeScriptFlavorRuleset('error', 'flat/recommended-typescript-flavor-error');\n\nindex.configs['flat/contents-typescript'] = createContentsTypescriptRuleset('warn', 'flat/contents-typescript');\nindex.configs['flat/contents-typescript-error'] = createContentsTypescriptRuleset('error', 'flat/contents-typescript-error');\nindex.configs['flat/contents-typescript-flavor'] = createContentsTypescriptFlavorRuleset('warn', 'flat/contents-typescript-flavor');\nindex.configs['flat/contents-typescript-flavor-error'] = createContentsTypescriptFlavorRuleset('error', 'flat/contents-typescript-error-flavor');\nindex.configs['flat/logical-typescript'] = createLogicalTypescriptRuleset('warn', 'flat/logical-typescript');\nindex.configs['flat/logical-typescript-error'] = createLogicalTypescriptRuleset('error', 'flat/logical-typescript-error');\nindex.configs['flat/logical-typescript-flavor'] = createLogicalTypescriptFlavorRuleset('warn', 'flat/logical-typescript-flavor');\nindex.configs['flat/logical-typescript-flavor-error'] = createLogicalTypescriptFlavorRuleset('error', 'flat/logical-typescript-error-flavor');\nindex.configs['flat/requirements-typescript'] = createRequirementsTypeScriptRuleset('warn', 'flat/requirements-typescript');\nindex.configs['flat/requirements-typescript-error'] = createRequirementsTypeScriptRuleset('error', 'flat/requirements-typescript-error');\nindex.configs['flat/requirements-typescript-flavor'] = createRequirementsTypeScriptFlavorRuleset('warn', 'flat/requirements-typescript-flavor');\nindex.configs['flat/requirements-typescript-flavor-error'] = createRequirementsTypeScriptFlavorRuleset('error', 'flat/requirements-typescript-error-flavor');\nindex.configs['flat/stylistic-typescript'] = createStylisticTypeScriptRuleset('warn', 'flat/stylistic-typescript');\nindex.configs['flat/stylistic-typescript-error'] = createStylisticTypeScriptRuleset('error', 'flat/stylistic-typescript-error');\nindex.configs['flat/stylistic-typescript-flavor'] = createStylisticTypeScriptFlavorRuleset('warn', 'flat/stylistic-typescript-flavor');\nindex.configs['flat/stylistic-typescript-flavor-error'] = createStylisticTypeScriptFlavorRuleset('error', 'flat/stylistic-typescript-error-flavor');\n\nindex.configs.examples = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/examples/processor',\n plugins: {\n examples: getJsdocProcessorPlugin(),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.md/*.js',\n ],\n name: 'jsdoc/examples/rules',\n rules: {\n // \"always\" newline rule at end unlikely in sample code\n '@stylistic/eol-last': 0,\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n '@stylistic/no-multiple-empty-lines': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n '@stylistic/padded-blocks': 0,\n\n '@typescript-eslint/no-unused-vars': 0,\n\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n 'jsdoc/require-file-overview': 0,\n\n // The end of a multiline comment would end the comment the example is in.\n 'jsdoc/require-jsdoc': 0,\n\n // See import/no-unresolved\n 'n/no-missing-import': 0,\n\n 'n/no-missing-require': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Often wish to start `@example` code after newline; also may use\n // empty lines for spacing\n 'no-multiple-empty-lines': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n },\n },\n]);\n\nindex.configs['default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n files: [\n '**/*.js',\n ],\n name: 'jsdoc/default-expressions/processor',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n processor: 'examples/examples',\n },\n {\n files: [\n '**/*.jsdoc-defaults', '**/*.jsdoc-params', '**/*.jsdoc-properties',\n ],\n name: 'jsdoc/default-expressions/rules',\n rules: {\n ...index.configs.examples[1].rules,\n '@stylistic/quotes': [\n 'error', 'double',\n ],\n '@stylistic/semi': [\n 'error', 'never',\n ],\n '@typescript-eslint/no-unused-expressions': 0,\n 'chai-friendly/no-unused-expressions': 0,\n 'no-empty-function': 0,\n 'no-new': 0,\n 'no-unused-expressions': 0,\n quotes: [\n 'error', 'double',\n ],\n semi: [\n 'error', 'never',\n ],\n strict: 0,\n },\n },\n]);\n\nindex.configs['examples-and-default-expressions'] = /** @type {import('eslint').Linter.Config[]} */ ([\n {\n name: 'jsdoc/examples-and-default-expressions',\n plugins: {\n examples: getJsdocProcessorPlugin({\n checkDefaults: true,\n checkParams: true,\n checkProperties: true,\n }),\n },\n },\n ...index.configs.examples.map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n ...index.configs['default-expressions'].map((config) => {\n return {\n ...config,\n plugins: {},\n };\n }),\n]);\n\nindex.configs['flat/recommended-mixed'] = [\n {\n ...index.configs['flat/recommended-typescript-flavor'],\n files: [\n '**/*.{js,jsx,cjs,mjs}',\n ],\n },\n {\n ...index.configs['flat/recommended-typescript'],\n files: [\n '**/*.{ts,tsx,cts,mts}',\n ],\n },\n];\n\nexport default index;\n\n/**\n * @type {((\n * cfg?: import('eslint').Linter.Config & {\n * config?: `flat/${ConfigGroups}${ConfigVariants}${ErrorLevelVariants}`,\n * mergeSettings?: boolean,\n * settings?: Partial<import('./iterateJsdoc.js').Settings>,\n * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},\n * extraRuleDefinitions?: {\n * forbid?: {\n * [contextName: string]: {\n * description?: string,\n * url?: string,\n * contexts: (string|{\n * message: string,\n * context: string,\n * comment: string\n * })[]\n * }\n * },\n * preferTypes?: {\n * [typeName: string]: {\n * description: string,\n * overrideSettings: {\n * [typeNodeName: string]: {\n * message: string,\n * replacement?: false|string,\n * unifyParentAndChildTypeChecks?: boolean,\n * }\n * },\n * url: string,\n * }\n * }\n * }\n * }\n * ) => import('eslint').Linter.Config)}\n */\nexport const jsdoc = function (cfg) {\n /** @type {import('eslint').Linter.Config} */\n let outputConfig = {\n plugins: {\n jsdoc: index,\n },\n };\n\n if (cfg) {\n if (cfg.config) {\n // @ts-expect-error Security check\n if (cfg.config === '__proto__') {\n throw new TypeError('Disallowed config value');\n }\n\n outputConfig = /** @type {import('eslint').Linter.Config} */ (index.configs[cfg.config]);\n }\n\n if (cfg.rules) {\n outputConfig.rules = {\n ...outputConfig.rules,\n ...cfg.rules,\n };\n }\n\n if (cfg.plugins) {\n outputConfig.plugins = {\n ...outputConfig.plugins,\n ...cfg.plugins,\n };\n }\n\n if (cfg.name) {\n outputConfig.name = cfg.name;\n }\n\n if (cfg.basePath) {\n outputConfig.basePath = cfg.basePath;\n }\n\n if (cfg.files) {\n outputConfig.files = cfg.files;\n }\n\n if (cfg.ignores) {\n outputConfig.ignores = cfg.ignores;\n }\n\n if (cfg.language) {\n outputConfig.language = cfg.language;\n }\n\n if (cfg.languageOptions) {\n outputConfig.languageOptions = cfg.languageOptions;\n }\n\n if (cfg.linterOptions) {\n outputConfig.linterOptions = cfg.linterOptions;\n }\n\n if (cfg.processor) {\n outputConfig.processor = cfg.processor;\n }\n\n if (cfg.extraRuleDefinitions) {\n if (!outputConfig.plugins?.jsdoc?.rules) {\n throw new Error('JSDoc plugin required for `extraRuleDefinitions`');\n }\n\n if (cfg.extraRuleDefinitions.forbid) {\n for (const [\n contextName,\n {\n contexts,\n description,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.forbid)) {\n outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] =\n buildForbidRuleDefinition({\n contextName,\n contexts,\n description,\n url,\n });\n }\n }\n\n if (cfg.extraRuleDefinitions.preferTypes) {\n for (const [\n typeName,\n {\n description,\n overrideSettings,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.preferTypes)) {\n outputConfig.plugins.jsdoc.rules[`prefer-type-${typeName}`] =\n buildRejectOrPreferRuleDefinition({\n description,\n overrideSettings,\n typeName,\n url,\n });\n }\n }\n }\n }\n\n outputConfig.settings = {\n jsdoc: cfg?.mergeSettings === false ?\n cfg.settings :\n merge(\n {},\n cfg?.settings ?? {},\n cfg?.config?.includes('recommended') ?\n {\n // We may need to drop these for \"typescript\" (non-\"flavor\") configs,\n // if support is later added: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n structuredTags: {\n next: {\n required: [\n 'type',\n ],\n },\n rejects: {\n required: [\n 'type',\n ],\n },\n },\n } :\n {},\n ),\n };\n\n return outputConfig;\n};\n\nexport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,53 @@ const {
12
12
  flow: commentFlow
13
13
  } = _commentParser.transforms;
14
14
 
15
+ /**
16
+ * Detects if a line starts with a markdown list marker
17
+ * Supports: -, *, numbered lists (1., 2., etc.)
18
+ * This explicitly excludes hyphens that are part of JSDoc tag syntax
19
+ * @param {string} text - The text to check
20
+ * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)
21
+ * @returns {boolean} - True if the text starts with a list marker
22
+ */
23
+ const startsWithListMarker = (text, isFirstLineOfTag = false) => {
24
+ // On the first line of a tag, the hyphen is typically the JSDoc separator,
25
+ // not a list marker
26
+ if (isFirstLineOfTag) {
27
+ return false;
28
+ }
29
+
30
+ // Match lines that start with optional whitespace, then a list marker
31
+ // - or * followed by a space
32
+ // or a number followed by . or ) and a space
33
+ return /^\s*(?:[\-*]|\d+(?:\.|\)))\s+/v.test(text);
34
+ };
35
+
36
+ /**
37
+ * Checks if we should allow extra indentation beyond wrapIndent.
38
+ * This is true for list continuation lines (lines with more indent than wrapIndent
39
+ * that follow a list item).
40
+ * @param {import('comment-parser').Spec} tag - The tag being checked
41
+ * @param {import('../iterateJsdoc.js').Integer} idx - Current line index (0-based in tag.source.slice(1))
42
+ * @returns {boolean} - True if extra indentation should be allowed
43
+ */
44
+ const shouldAllowExtraIndent = (tag, idx) => {
45
+ // Check if any previous line in this tag had a list marker
46
+ // idx is 0-based in the continuation lines (tag.source.slice(1))
47
+ // So tag.source[0] is the tag line, tag.source[idx+1] is current line
48
+ let hasSeenListMarker = false;
49
+
50
+ // Check all lines from the tag line onwards
51
+ for (let lineIdx = 0; lineIdx <= idx + 1; lineIdx++) {
52
+ const line = tag.source[lineIdx];
53
+ const isFirstLine = lineIdx === 0;
54
+ if (line?.tokens?.description && startsWithListMarker(line.tokens.description, isFirstLine)) {
55
+ hasSeenListMarker = true;
56
+ break;
57
+ }
58
+ }
59
+ return hasSeenListMarker;
60
+ };
61
+
15
62
  /**
16
63
  * @typedef {{
17
64
  * postDelimiter: import('../iterateJsdoc.js').Integer,
@@ -250,7 +297,14 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
250
297
  }
251
298
 
252
299
  // Don't include a single separating space/tab
253
- if (!disableWrapIndent && tokens.postDelimiter.slice(1) !== wrapIndent) {
300
+ const actualIndent = tokens.postDelimiter.slice(1);
301
+ const hasCorrectWrapIndent = actualIndent === wrapIndent;
302
+
303
+ // Allow extra indentation if this line or previous lines contain list markers
304
+ // This preserves nested list structure
305
+ const hasExtraIndent = actualIndent.length > wrapIndent.length && actualIndent.startsWith(wrapIndent);
306
+ const isInListContext = shouldAllowExtraIndent(tag, idx - 1);
307
+ if (!disableWrapIndent && !hasCorrectWrapIndent && !(hasExtraIndent && isInListContext)) {
254
308
  utils.reportJSDoc('Expected wrap indent', {
255
309
  line: tag.source[0].number + idx
256
310
  }, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"checkLineAlignment.cjs","names":["_alignTransform","_interopRequireDefault","require","_iterateJsdoc","_commentParser","e","__esModule","default","flow","commentFlow","transforms","checkNotAlignedPerTag","utils","tag","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNameOrNamepath","tokens","source","followedBySpace","idx","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","test","description","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","disableWrapIndent","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","exports","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","postDelimiter","line","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import alignTransform from '../alignTransform.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\nimport {\n transforms,\n} from 'comment-parser';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\n/**\n * @typedef {{\n * postDelimiter: import('../iterateJsdoc.js').Integer,\n * postHyphen: import('../iterateJsdoc.js').Integer,\n * postName: import('../iterateJsdoc.js').Integer,\n * postTag: import('../iterateJsdoc.js').Integer,\n * postType: import('../iterateJsdoc.js').Integer,\n * }} CustomSpacings\n */\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }} tag\n * @param {CustomSpacings} customSpacings\n */\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n\n /**\n * @typedef {\"tag\"|\"type\"|\"name\"|\"description\"} ContentProp\n */\n\n /** @type {(\"postDelimiter\"|\"postTag\"|\"postType\"|\"postName\")[]} */\n let spacerProps;\n /** @type {ContentProp[]} */\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNameOrNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n /**\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @param {(notRet: boolean, contentProp: ContentProp) => void} [callbck]\n */\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'v');\n const hasNoHyphen = !(/^\\s*-(?!$)(?=\\s)/v).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s+/v;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\n/**\n * @param {object} cfg\n * @param {CustomSpacings} cfg.customSpacings\n * @param {string} cfg.indent\n * @param {import('comment-parser').Block} cfg.jsdoc\n * @param {import('eslint').Rule.Node & {\n * range: [number, number]\n * }} cfg.jsdocNode\n * @param {boolean} cfg.preserveMainDescriptionPostDelimiter\n * @param {import('../iterateJsdoc.js').Report} cfg.report\n * @param {string[]} cfg.tags\n * @param {import('../iterateJsdoc.js').Utils} cfg.utils\n * @param {string} cfg.wrapIndent\n * @param {boolean} cfg.disableWrapIndent\n * @returns {void}\n */\nconst checkAlignment = ({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n disableWrapIndent,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' +\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */ (jsdocNode).value + '*/';\n\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n jsdocNode,\n report,\n utils,\n}) => {\n const {\n customSpacings,\n disableWrapIndent = false,\n preserveMainDescriptionPostDelimiter,\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template',\n ],\n wrapIndent = '',\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!(\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */\n (jsdocNode).value.includes('\\n')\n )) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(\n utils,\n /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }}\n */\n (tag),\n customSpacings,\n );\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n if (!disableWrapIndent && tokens.postDelimiter.slice(1) !== wrapIndent) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt(0) + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [\n {\n description: `If the string value is\n\\`\"always\"\\` then a problem is raised when the lines are not aligned.\nIf it is \\`\"never\"\\` then a problem should be raised when there is more than\none space between each line's parts. If it is \\`\"any\"\\`, no alignment is made.\nDefaults to \\`\"never\"\\`.\n\nNote that in addition to alignment, the \"never\" and \"always\" options will both\nensure that at least one space is present after the asterisk delimiter.`,\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n description: `An object with any of the following spacing keys set to an integer.\nIf a spacing is not defined, it defaults to one.`,\n properties: {\n postDelimiter: {\n description: 'Affects spacing after the asterisk (e.g., `* @param`)',\n type: 'integer',\n },\n postHyphen: {\n description: 'Affects spacing after any hyphens in the description (e.g., `* @param {someType} name - A description`)',\n type: 'integer',\n },\n postName: {\n description: 'Affects spacing after the name (e.g., `* @param {someType} name `)',\n type: 'integer',\n },\n postTag: {\n description: 'Affects spacing after the tag (e.g., `* @param `)',\n type: 'integer',\n },\n postType: {\n description: 'Affects spacing after the type (e.g., `* @param {someType} `)',\n type: 'integer',\n },\n },\n type: 'object',\n },\n disableWrapIndent: {\n description: 'Disables `wrapIndent`; existing wrap indentation is preserved without changes.',\n type: 'boolean',\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n description: `A boolean to determine whether to preserve the post-delimiter spacing of the\nmain description. If \\`false\\` or unset, will be set to a single space.`,\n type: 'boolean',\n },\n tags: {\n description: `Use this to change the tags which are sought for alignment changes. Defaults to an array of\n\\`['param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template']\\`.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n description: `The indent that will be applied for tag text after the first line.\nDefault to the empty string (no indent).`,\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"checkLineAlignment.cjs","names":["_alignTransform","_interopRequireDefault","require","_iterateJsdoc","_commentParser","e","__esModule","default","flow","commentFlow","transforms","startsWithListMarker","text","isFirstLineOfTag","test","shouldAllowExtraIndent","tag","idx","hasSeenListMarker","lineIdx","line","source","isFirstLine","tokens","description","checkNotAlignedPerTag","utils","customSpacings","spacerProps","contentProps","mightHaveNamepath","tagMightHaveNameOrNamepath","followedBySpace","callbck","nextIndex","slice","some","spacerProp","innerIdx","contentProp","spacePropVal","ret","postHyphenSpacing","postHyphen","exactHyphenSpacing","RegExp","hasNoHyphen","hasExactHyphenSpacing","ok","contentPropVal","spacerPropVal","spacing","length","fix","entries","padStart","hasSpace","contentPrp","hyphenSpacing","replace","setTag","reportJSDoc","checkAlignment","disableWrapIndent","indent","jsdoc","jsdocNode","preserveMainDescriptionPostDelimiter","report","tags","wrapIndent","transform","alignTransform","transformedJsdoc","comment","value","formatted","stringify","trimStart","fixer","replaceText","_default","exports","iterateJsdoc","context","applicableTags","options","includes","foundTags","getPresentTags","type","name","actualIndent","postDelimiter","hasCorrectWrapIndent","hasExtraIndent","startsWith","isInListContext","number","charAt","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperties","properties","postName","postTag","postType","items","module"],"sources":["../../src/rules/checkLineAlignment.js"],"sourcesContent":["import alignTransform from '../alignTransform.js';\nimport iterateJsdoc from '../iterateJsdoc.js';\nimport {\n transforms,\n} from 'comment-parser';\n\nconst {\n flow: commentFlow,\n} = transforms;\n\n/**\n * Detects if a line starts with a markdown list marker\n * Supports: -, *, numbered lists (1., 2., etc.)\n * This explicitly excludes hyphens that are part of JSDoc tag syntax\n * @param {string} text - The text to check\n * @param {boolean} isFirstLineOfTag - True if this is the first line (tag line)\n * @returns {boolean} - True if the text starts with a list marker\n */\nconst startsWithListMarker = (text, isFirstLineOfTag = false) => {\n // On the first line of a tag, the hyphen is typically the JSDoc separator,\n // not a list marker\n if (isFirstLineOfTag) {\n return false;\n }\n\n // Match lines that start with optional whitespace, then a list marker\n // - or * followed by a space\n // or a number followed by . or ) and a space\n return /^\\s*(?:[\\-*]|\\d+(?:\\.|\\)))\\s+/v.test(text);\n};\n\n/**\n * Checks if we should allow extra indentation beyond wrapIndent.\n * This is true for list continuation lines (lines with more indent than wrapIndent\n * that follow a list item).\n * @param {import('comment-parser').Spec} tag - The tag being checked\n * @param {import('../iterateJsdoc.js').Integer} idx - Current line index (0-based in tag.source.slice(1))\n * @returns {boolean} - True if extra indentation should be allowed\n */\nconst shouldAllowExtraIndent = (tag, idx) => {\n // Check if any previous line in this tag had a list marker\n // idx is 0-based in the continuation lines (tag.source.slice(1))\n // So tag.source[0] is the tag line, tag.source[idx+1] is current line\n let hasSeenListMarker = false;\n\n // Check all lines from the tag line onwards\n for (let lineIdx = 0; lineIdx <= idx + 1; lineIdx++) {\n const line = tag.source[lineIdx];\n const isFirstLine = lineIdx === 0;\n if (line?.tokens?.description && startsWithListMarker(line.tokens.description, isFirstLine)) {\n hasSeenListMarker = true;\n break;\n }\n }\n\n return hasSeenListMarker;\n};\n\n/**\n * @typedef {{\n * postDelimiter: import('../iterateJsdoc.js').Integer,\n * postHyphen: import('../iterateJsdoc.js').Integer,\n * postName: import('../iterateJsdoc.js').Integer,\n * postTag: import('../iterateJsdoc.js').Integer,\n * postType: import('../iterateJsdoc.js').Integer,\n * }} CustomSpacings\n */\n\n/**\n * @param {import('../iterateJsdoc.js').Utils} utils\n * @param {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }} tag\n * @param {CustomSpacings} customSpacings\n */\nconst checkNotAlignedPerTag = (utils, tag, customSpacings) => {\n /*\n start +\n delimiter +\n postDelimiter +\n tag +\n postTag +\n type +\n postType +\n name +\n postName +\n description +\n end +\n lineEnd\n */\n\n /**\n * @typedef {\"tag\"|\"type\"|\"name\"|\"description\"} ContentProp\n */\n\n /** @type {(\"postDelimiter\"|\"postTag\"|\"postType\"|\"postName\")[]} */\n let spacerProps;\n /** @type {ContentProp[]} */\n let contentProps;\n const mightHaveNamepath = utils.tagMightHaveNameOrNamepath(tag.tag);\n if (mightHaveNamepath) {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType', 'postName',\n ];\n contentProps = [\n 'tag', 'type', 'name', 'description',\n ];\n } else {\n spacerProps = [\n 'postDelimiter', 'postTag', 'postType',\n ];\n contentProps = [\n 'tag', 'type', 'description',\n ];\n }\n\n const {\n tokens,\n } = tag.source[0];\n\n /**\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @param {(notRet: boolean, contentProp: ContentProp) => void} [callbck]\n */\n const followedBySpace = (idx, callbck) => {\n const nextIndex = idx + 1;\n\n return spacerProps.slice(nextIndex).some((spacerProp, innerIdx) => {\n const contentProp = contentProps[nextIndex + innerIdx];\n\n const spacePropVal = tokens[spacerProp];\n\n const ret = spacePropVal;\n\n if (callbck) {\n callbck(!ret, contentProp);\n }\n\n return ret && (callbck || !contentProp);\n });\n };\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const exactHyphenSpacing = new RegExp(`^\\\\s*-\\\\s{${postHyphenSpacing},${postHyphenSpacing}}(?!\\\\s)`, 'v');\n const hasNoHyphen = !(/^\\s*-(?!$)(?=\\s)/v).test(tokens.description);\n const hasExactHyphenSpacing = exactHyphenSpacing.test(\n tokens.description,\n );\n\n // If checking alignment on multiple lines, need to check other `source`\n // items\n // Go through `post*` spacing properties and exit to indicate problem if\n // extra spacing detected\n const ok = !spacerProps.some((spacerProp, idx) => {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n const spacerPropVal = tokens[spacerProp];\n const spacing = customSpacings?.[spacerProp] || 1;\n\n // There will be extra alignment if...\n\n // 1. The spaces don't match the space it should have (1 or custom spacing) OR\n return spacerPropVal.length !== spacing && spacerPropVal.length !== 0 ||\n\n // 2. There is a (single) space, no immediate content, and yet another\n // space is found subsequently (not separated by intervening content)\n spacerPropVal && !contentPropVal && followedBySpace(idx);\n }) && (hasNoHyphen || hasExactHyphenSpacing);\n if (ok) {\n return;\n }\n\n const fix = () => {\n for (const [\n idx,\n spacerProp,\n ] of spacerProps.entries()) {\n const contentProp = contentProps[idx];\n const contentPropVal = tokens[contentProp];\n\n if (contentPropVal) {\n const spacing = customSpacings?.[spacerProp] || 1;\n tokens[spacerProp] = ''.padStart(spacing, ' ');\n followedBySpace(idx, (hasSpace, contentPrp) => {\n if (hasSpace) {\n tokens[contentPrp] = '';\n }\n });\n } else {\n tokens[spacerProp] = '';\n }\n }\n\n if (!hasExactHyphenSpacing) {\n const hyphenSpacing = /^\\s*-\\s+/v;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n }\n\n utils.setTag(tag, tokens);\n };\n\n utils.reportJSDoc('Expected JSDoc block lines to not be aligned.', tag, fix, true);\n};\n\n/**\n * @param {object} cfg\n * @param {CustomSpacings} cfg.customSpacings\n * @param {string} cfg.indent\n * @param {import('comment-parser').Block} cfg.jsdoc\n * @param {import('eslint').Rule.Node & {\n * range: [number, number]\n * }} cfg.jsdocNode\n * @param {boolean} cfg.preserveMainDescriptionPostDelimiter\n * @param {import('../iterateJsdoc.js').Report} cfg.report\n * @param {string[]} cfg.tags\n * @param {import('../iterateJsdoc.js').Utils} cfg.utils\n * @param {string} cfg.wrapIndent\n * @param {boolean} cfg.disableWrapIndent\n * @returns {void}\n */\nconst checkAlignment = ({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags,\n utils,\n wrapIndent,\n}) => {\n const transform = commentFlow(\n alignTransform({\n customSpacings,\n disableWrapIndent,\n indent,\n preserveMainDescriptionPostDelimiter,\n tags,\n wrapIndent,\n }),\n );\n const transformedJsdoc = transform(jsdoc);\n\n const comment = '/*' +\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */ (jsdocNode).value + '*/';\n\n const formatted = utils.stringify(transformedJsdoc)\n .trimStart();\n\n if (comment !== formatted) {\n report(\n 'Expected JSDoc block lines to be aligned.',\n /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n return fixer.replaceText(jsdocNode, formatted);\n },\n );\n }\n};\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n jsdocNode,\n report,\n utils,\n}) => {\n const {\n customSpacings,\n disableWrapIndent = false,\n preserveMainDescriptionPostDelimiter,\n tags: applicableTags = [\n 'param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template',\n ],\n wrapIndent = '',\n } = context.options[1] || {};\n\n if (context.options[0] === 'always') {\n // Skip if it contains only a single line.\n if (!(\n /**\n * @type {import('eslint').Rule.Node & {\n * range: [number, number], value: string\n * }}\n */\n (jsdocNode).value.includes('\\n')\n )) {\n return;\n }\n\n checkAlignment({\n customSpacings,\n disableWrapIndent,\n indent,\n jsdoc,\n jsdocNode,\n preserveMainDescriptionPostDelimiter,\n report,\n tags: applicableTags,\n utils,\n wrapIndent,\n });\n\n return;\n }\n\n const foundTags = utils.getPresentTags(applicableTags);\n if (context.options[0] !== 'any') {\n for (const tag of foundTags) {\n checkNotAlignedPerTag(\n utils,\n /**\n * @type {import('comment-parser').Spec & {\n * line: import('../iterateJsdoc.js').Integer\n * }}\n */\n (tag),\n customSpacings,\n );\n }\n }\n\n for (const tag of foundTags) {\n if (tag.source.length > 1) {\n let idx = 0;\n for (const {\n tokens,\n // Avoid the tag line\n } of tag.source.slice(1)) {\n idx++;\n\n if (\n !tokens.description ||\n // Avoid first lines after multiline type\n tokens.type ||\n tokens.name\n ) {\n continue;\n }\n\n // Don't include a single separating space/tab\n const actualIndent = tokens.postDelimiter.slice(1);\n const hasCorrectWrapIndent = actualIndent === wrapIndent;\n\n // Allow extra indentation if this line or previous lines contain list markers\n // This preserves nested list structure\n const hasExtraIndent = actualIndent.length > wrapIndent.length &&\n actualIndent.startsWith(wrapIndent);\n const isInListContext = shouldAllowExtraIndent(tag, idx - 1);\n\n if (!disableWrapIndent && !hasCorrectWrapIndent &&\n !(hasExtraIndent && isInListContext)) {\n utils.reportJSDoc('Expected wrap indent', {\n line: tag.source[0].number + idx,\n }, () => {\n tokens.postDelimiter = tokens.postDelimiter.charAt(0) + wrapIndent;\n });\n return;\n }\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block lines.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-line-alignment.md#repos-sticky-header',\n },\n fixable: 'whitespace',\n schema: [\n {\n description: `If the string value is\n\\`\"always\"\\` then a problem is raised when the lines are not aligned.\nIf it is \\`\"never\"\\` then a problem should be raised when there is more than\none space between each line's parts. If it is \\`\"any\"\\`, no alignment is made.\nDefaults to \\`\"never\"\\`.\n\nNote that in addition to alignment, the \"never\" and \"always\" options will both\nensure that at least one space is present after the asterisk delimiter.`,\n enum: [\n 'always', 'never', 'any',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n customSpacings: {\n additionalProperties: false,\n description: `An object with any of the following spacing keys set to an integer.\nIf a spacing is not defined, it defaults to one.`,\n properties: {\n postDelimiter: {\n description: 'Affects spacing after the asterisk (e.g., `* @param`)',\n type: 'integer',\n },\n postHyphen: {\n description: 'Affects spacing after any hyphens in the description (e.g., `* @param {someType} name - A description`)',\n type: 'integer',\n },\n postName: {\n description: 'Affects spacing after the name (e.g., `* @param {someType} name `)',\n type: 'integer',\n },\n postTag: {\n description: 'Affects spacing after the tag (e.g., `* @param `)',\n type: 'integer',\n },\n postType: {\n description: 'Affects spacing after the type (e.g., `* @param {someType} `)',\n type: 'integer',\n },\n },\n type: 'object',\n },\n disableWrapIndent: {\n description: 'Disables `wrapIndent`; existing wrap indentation is preserved without changes.',\n type: 'boolean',\n },\n preserveMainDescriptionPostDelimiter: {\n default: false,\n description: `A boolean to determine whether to preserve the post-delimiter spacing of the\nmain description. If \\`false\\` or unset, will be set to a single space.`,\n type: 'boolean',\n },\n tags: {\n description: `Use this to change the tags which are sought for alignment changes. Defaults to an array of\n\\`['param', 'arg', 'argument', 'property', 'prop', 'returns', 'return', 'template']\\`.`,\n items: {\n type: 'string',\n },\n type: 'array',\n },\n wrapIndent: {\n description: `The indent that will be applied for tag text after the first line.\nDefault to the empty string (no indent).`,\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -68,7 +68,8 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
68
68
  * @returns {boolean}
69
69
  */
70
70
  const isInAmbientContext = subNode => {
71
- return subNode.type === 'Program' ? context.getFilename().endsWith('.d.ts') : Boolean(/** @type {import('@typescript-eslint/types').TSESTree.VariableDeclaration} */subNode.declare) || isInAmbientContext(subNode.parent);
71
+ return subNode.type === 'Program' ? /* c8 ignore next -- Support old ESLint */
72
+ (context.filename ?? context.getFilename()).endsWith('.d.ts') : Boolean(/** @type {import('@typescript-eslint/types').TSESTree.VariableDeclaration} */subNode.declare) || isInAmbientContext(subNode.parent);
72
73
  };
73
74
 
74
75
  /**
@@ -85,7 +86,9 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
85
86
  if (node === null) {
86
87
  return false;
87
88
  }
88
- if (context.getFilename().endsWith('.d.ts') && [null, 'Program', undefined].includes(node?.parent?.type)) {
89
+
90
+ /* c8 ignore next -- Support old ESLint */
91
+ if ((context.filename ?? context.getFilename()).endsWith('.d.ts') && [null, 'Program', undefined].includes(node?.parent?.type)) {
89
92
  return false;
90
93
  }
91
94
  if (isInAmbientContext(/** @type {import('eslint').Rule.Node} */node)) {