{"version":3,"file":"emptyTags.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","defaultEmptyTags","Set","emptyIfNotClosure","emptyIfClosure","_default","exports","iterateJsdoc","jsdoc","settings","utils","emptyTags","filterTags","tag","tagName","has","hasOptionTag","tags","some","mode","key","entries","content","name","description","type","trim","length","test","fix","setTag","reportJSDoc","checkInternal","checkPrivate","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items","module"],"sources":["../../src/rules/emptyTags.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst defaultEmptyTags = new Set([\n  'abstract', 'async', 'generator', 'global', 'hideconstructor',\n\n  // jsdoc doesn't use this form in its docs, but allow for compatibility with\n  //  TypeScript which allows and Closure which requires\n  'ignore',\n\n  // jsdoc doesn't use but allow for TypeScript\n  'inheritDoc', 'inner', 'instance',\n  'internal',\n\n  'overload',\n\n  'override',\n  'readonly',\n]);\n\nconst emptyIfNotClosure = new Set([\n  // Closure doesn't allow with this casing\n  'inheritdoc', 'package', 'private', 'protected', 'public',\n\n  'static',\n]);\n\nconst emptyIfClosure = new Set([\n  'interface',\n]);\n\nexport default iterateJsdoc(({\n  jsdoc,\n  settings,\n  utils,\n}) => {\n  const emptyTags = utils.filterTags(({\n    tag: tagName,\n  }) => {\n    return defaultEmptyTags.has(tagName) ||\n      utils.hasOptionTag(tagName) && jsdoc.tags.some(({\n        tag,\n      }) => {\n        return tag === tagName;\n      }) ||\n      settings.mode === 'closure' && emptyIfClosure.has(tagName) ||\n      settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);\n  });\n\n  for (const [\n    key,\n    tag,\n  ] of emptyTags.entries()) {\n    const content = tag.name || tag.description || tag.type;\n    if (content.trim() && (\n      // Allow for JSDoc-block final asterisks\n      key !== emptyTags.length - 1 || !(/^\\s*\\*+$/v).test(content)\n    )) {\n      const fix = () => {\n        // By time of call in fixer, `tag` will have `line` added\n        utils.setTag(\n          /**\n           * @type {import('comment-parser').Spec & {\n           *   line: import('../iterateJsdoc.js').Integer\n           * }}\n           */ (tag),\n        );\n      };\n\n      utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);\n    }\n  }\n}, {\n  checkInternal: true,\n  checkPrivate: true,\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Checks tags that are expected to be empty (e.g., `@abstract` or `@async`), reporting if they have content',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/empty-tags.md#repos-sticky-header',\n    },\n    fixable: 'code',\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          tags: {\n            description: `If you want additional tags to be checked for their descriptions, you may\nadd them within this option.\n\n\\`\\`\\`js\n{\n  'jsdoc/empty-tags': ['error', {tags: ['event']}]\n}\n\\`\\`\\``,\n            items: {\n              type: 'string',\n            },\n            type: 'array',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}