{"version":3,"file":"checkTagNames.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_escapeStringRegexp","e","__esModule","default","jsxTagNames","Set","typedTagsAlwaysUnnecessary","typedTagsNeedingName","typedTagsUnnecessaryOutsideDeclare","_default","exports","iterateJsdoc","context","jsdoc","jsdocNode","node","report","settings","sourceCode","utils","definedTags","enableFixer","inlineTags","jsxTags","typed","options","definedPreferredTags","structuredTags","tagNamePreference","definedStructuredTags","Object","keys","definedNonPreferredTags","length","values","map","preferredTag","undefined","reportSettings","replacement","filter","Boolean","isInAmbientContext","subNode","type","filename","getFilename","endsWith","declare","parent","tagIsRedundantWhenTyped","jsdocTag","has","tag","includes","reportWithTagRemovalFixer","message","tagIndex","additionalTagChanges","reportJSDoc","description","trim","changeTag","postType","removeTag","removeEmptyBlock","checkTagForTypedValidity","postTag","name","tags","tagName","validTags","isValidTag","preferredTagName","getPreferredTagName","allowObjectReturn","defaultMessage","fixer","getText","replace","RegExp","escapeStringRegexp","replaceText","inlineTag","getInlineTags","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/checkTagNames.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport escapeStringRegexp from 'escape-string-regexp';\n\n// https://babeljs.io/docs/en/babel-plugin-transform-react-jsx/\nconst jsxTagNames = new Set([\n  'jsx',\n  'jsxFrag',\n  'jsxImportSource',\n  'jsxRuntime',\n]);\n\nconst typedTagsAlwaysUnnecessary = new Set([\n  'augments',\n  'callback',\n  'class',\n  'enum',\n  'implements',\n  'private',\n  'property',\n  'protected',\n  'public',\n  'readonly',\n  'this',\n  'type',\n  'typedef',\n]);\n\nconst typedTagsNeedingName = new Set([\n  'template',\n]);\n\nconst typedTagsUnnecessaryOutsideDeclare = new Set([\n  'abstract',\n  'access',\n  'class',\n  'constant',\n  'constructs',\n  'default',\n  'enum',\n  'export',\n  'exports',\n  'function',\n  'global',\n  'inherits',\n  'instance',\n  'interface',\n  'member',\n  'memberof',\n  'memberOf',\n  'method',\n  'mixes',\n  'mixin',\n  'module',\n  'name',\n  'namespace',\n  'override',\n  'property',\n  'requires',\n  'static',\n  'this',\n]);\n\nexport default iterateJsdoc(({\n  context,\n  jsdoc,\n  jsdocNode,\n  node,\n  report,\n  settings,\n  sourceCode,\n  utils,\n}) => {\n  const\n    /**\n     * @type {{\n     *   definedTags: string[],\n     *   enableFixer: boolean,\n     *   inlineTags: string[],\n     *   jsxTags: boolean,\n     *   typed: boolean\n     }} */ {\n      definedTags = [],\n      enableFixer = true,\n      inlineTags = [\n        // jsdoc\n        'link', 'linkcode', 'linkplain', 'tutorial',\n        // https://tsdoc.org/pages/spec/tag_kinds/#inline-tags\n        'inheritDoc',\n        'label',\n        // https://typedoc.org/documents/Tags.html#inline-tags\n        'include', 'includeCode',\n      ],\n      jsxTags,\n      typed,\n    } = context.options[0] || {};\n\n  /** @type {(string|undefined)[]} */\n  let definedPreferredTags = [];\n  const {\n    structuredTags,\n    tagNamePreference,\n  } = settings;\n  const definedStructuredTags = Object.keys(structuredTags);\n  const definedNonPreferredTags = Object.keys(tagNamePreference);\n  if (definedNonPreferredTags.length) {\n    definedPreferredTags = Object.values(tagNamePreference).map((preferredTag) => {\n      if (typeof preferredTag === 'string') {\n        // May become an empty string but will be filtered out below\n        return preferredTag;\n      }\n\n      if (!preferredTag) {\n        return undefined;\n      }\n\n      if (typeof preferredTag !== 'object') {\n        utils.reportSettings(\n          'Invalid `settings.jsdoc.tagNamePreference`. Values must be falsy, a string, or an object.',\n        );\n      }\n\n      return preferredTag.replacement;\n    })\n      .filter(Boolean);\n  }\n\n  /**\n   * @param {import('eslint').Rule.Node} subNode\n   * @returns {boolean}\n   */\n  const isInAmbientContext = (subNode) => {\n    return subNode.type === 'Program' ?\n      /* c8 ignore next 2 -- Support old ESLint */\n      // @ts-expect-error ESLint < 10\n      (context.filename ?? context.getFilename()).endsWith('.d.ts') :\n      Boolean(\n        /** @type {import('@typescript-eslint/types').TSESTree.VariableDeclaration} */ (\n          subNode\n        ).declare,\n      ) || isInAmbientContext(subNode.parent);\n  };\n\n  /**\n   * @param {import('comment-parser').Spec} jsdocTag\n   * @returns {boolean}\n   */\n  const tagIsRedundantWhenTyped = (jsdocTag) => {\n    if (!typedTagsUnnecessaryOutsideDeclare.has(jsdocTag.tag)) {\n      return false;\n    }\n\n    if (jsdocTag.tag === 'default') {\n      return false;\n    }\n\n    if (node === null) {\n      return false;\n    }\n\n    /* c8 ignore next 2 -- Support old ESLint */\n    // @ts-expect-error ESLint < 10\n    if ((context.filename ?? context.getFilename()).endsWith('.d.ts') && [\n      null, 'Program', undefined,\n    ].includes(node?.parent?.type)) {\n      return false;\n    }\n\n    if (isInAmbientContext(/** @type {import('eslint').Rule.Node} */ (node))) {\n      return false;\n    }\n\n    return true;\n  };\n\n  /**\n   * @param {string} message\n   * @param {import('comment-parser').Spec} jsdocTag\n   * @param {import('../iterateJsdoc.js').Integer} tagIndex\n   * @param {Partial<import('comment-parser').Tokens>} [additionalTagChanges]\n   * @returns {void}\n   */\n  const reportWithTagRemovalFixer = (message, jsdocTag, tagIndex, additionalTagChanges) => {\n    utils.reportJSDoc(message, jsdocTag, enableFixer ? () => {\n      if (jsdocTag.description.trim()) {\n        utils.changeTag(jsdocTag, {\n          postType: '',\n          type: '',\n          ...additionalTagChanges,\n        });\n      } else {\n        utils.removeTag(tagIndex, {\n          removeEmptyBlock: true,\n        });\n      }\n    } : null, true);\n  };\n\n  /**\n   * @param {import('comment-parser').Spec} jsdocTag\n   * @param {import('../iterateJsdoc.js').Integer} tagIndex\n   * @returns {boolean}\n   */\n  const checkTagForTypedValidity = (jsdocTag, tagIndex) => {\n    if (typedTagsAlwaysUnnecessary.has(jsdocTag.tag)) {\n      reportWithTagRemovalFixer(\n        `'@${jsdocTag.tag}' is redundant when using a type system.`,\n        jsdocTag,\n        tagIndex,\n        {\n          postTag: '',\n          tag: '',\n        },\n      );\n      return true;\n    }\n\n    if (tagIsRedundantWhenTyped(jsdocTag)) {\n      reportWithTagRemovalFixer(\n        `'@${jsdocTag.tag}' is redundant outside of ambient (\\`declare\\`/\\`.d.ts\\`) contexts when using a type system.`,\n        jsdocTag,\n        tagIndex,\n      );\n      return true;\n    }\n\n    if (typedTagsNeedingName.has(jsdocTag.tag) && !jsdocTag.name) {\n      reportWithTagRemovalFixer(\n        `'@${jsdocTag.tag}' without a name is redundant when using a type system.`,\n        jsdocTag,\n        tagIndex,\n      );\n      return true;\n    }\n\n    return false;\n  };\n\n  for (let tagIndex = 0; tagIndex < jsdoc.tags.length; tagIndex += 1) {\n    const jsdocTag = jsdoc.tags[tagIndex];\n    const tagName = jsdocTag.tag;\n    if (jsxTags && jsxTagNames.has(tagName)) {\n      continue;\n    }\n\n    if (typed && checkTagForTypedValidity(jsdocTag, tagIndex)) {\n      continue;\n    }\n\n    const validTags = [\n      ...definedTags,\n      ...(/** @type {string[]} */ (definedPreferredTags)),\n      ...definedNonPreferredTags,\n      ...definedStructuredTags,\n      ...typed ? typedTagsNeedingName : [],\n    ];\n\n    if (utils.isValidTag(tagName, validTags)) {\n      let preferredTagName = utils.getPreferredTagName({\n        allowObjectReturn: true,\n        defaultMessage: `Blacklisted tag found (\\`@${tagName}\\`)`,\n        tagName,\n      });\n      if (!preferredTagName) {\n        continue;\n      }\n\n      let message;\n      if (typeof preferredTagName === 'object') {\n        ({\n          message,\n          replacement: preferredTagName,\n        } = /** @type {{message: string; replacement?: string | undefined;}} */ (\n          preferredTagName\n        ));\n      }\n\n      if (!message) {\n        message = `Invalid JSDoc tag (preference). Replace \"${tagName}\" JSDoc tag with \"${preferredTagName}\".`;\n      }\n\n      if (preferredTagName !== tagName) {\n        report(message, (fixer) => {\n          const replacement = sourceCode.getText(jsdocNode).replace(\n            new RegExp(`@${escapeStringRegexp(tagName)}\\\\b`, 'v'),\n            `@${preferredTagName}`,\n          );\n\n          return fixer.replaceText(jsdocNode, replacement);\n        }, jsdocTag);\n      }\n    } else {\n      report(`Invalid JSDoc tag name \"${tagName}\".`, null, jsdocTag);\n    }\n  }\n\n  for (const inlineTag of utils.getInlineTags()) {\n    if (!inlineTags.includes(inlineTag.tag)) {\n      report(`Invalid JSDoc inline tag name \"${inlineTag.tag}\"`, null, inlineTag);\n    }\n  }\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Reports invalid block tag names.',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-tag-names.md#repos-sticky-header',\n    },\n    fixable: 'code',\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          definedTags: {\n            description: `Use an array of \\`definedTags\\` strings to configure additional, allowed tags.\nThe format is as follows:\n\n\\`\\`\\`json\n{\n  \"definedTags\": [\"note\", \"record\"]\n}\n\\`\\`\\``,\n            items: {\n              type: 'string',\n            },\n            type: 'array',\n          },\n          enableFixer: {\n            description: 'Set to `false` to disable auto-removal of types that are redundant with the [`typed` option](#typed).',\n            type: 'boolean',\n          },\n          inlineTags: {\n            description: `List of tags to allow inline.\n\nDefaults to array of \\`'link', 'linkcode', 'linkplain', 'tutorial', 'inheritDoc', 'label', 'include', and 'includeCode'\\``,\n            items: {\n              type: 'string',\n            },\n            type: 'array',\n          },\n          jsxTags: {\n            description: `If this is set to \\`true\\`, all of the following tags used to control JSX output are allowed:\n\n\\`\\`\\`\njsx\njsxFrag\njsxImportSource\njsxRuntime\n\\`\\`\\`\n\nFor more information, see the [babel documentation](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx).`,\n            type: 'boolean',\n          },\n          typed: {\n            description: `If this is set to \\`true\\`, additionally checks for tag names that are redundant when using a type checker such as TypeScript.\n\nThese tags are always unnecessary when using TypeScript or similar:\n\n\\`\\`\\`\naugments\ncallback\nclass\nenum\nimplements\nprivate\nproperty\nprotected\npublic\nreadonly\nthis\ntype\ntypedef\n\\`\\`\\`\n\nThese tags are unnecessary except when inside a TypeScript \\`declare\\` context:\n\n\\`\\`\\`\nabstract\naccess\nclass\nconstant\nconstructs\ndefault\nenum\nexport\nexports\nfunction\nglobal\ninherits\ninstance\ninterface\nmember\nmemberof\nmemberOf\nmethod\nmixes\nmixin\nmodule\nname\nnamespace\noverride\nproperty\nrequires\nstatic\nthis\n\\`\\`\\``,\n            type: 'boolean',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}