{"version":3,"file":"noMultiAsterisks.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","_default","exports","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","number","tokens","delimiter","description","end","name","postDelimiter","tag","type","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","module"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/v;\nconst middleAsterisksNoBlockWS = /^\\*+/v;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/v;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/v;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/v;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/v;\n\nexport default iterateJsdoc(({\n  context,\n  jsdoc,\n  utils,\n}) => {\n  const {\n    allowWhitespace = false,\n    preventAtEnd = true,\n    preventAtMiddleLines = true,\n  } = context.options[0] || {};\n\n  const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n  jsdoc.source.some(({\n    number,\n    tokens,\n  }) => {\n    const {\n      delimiter,\n      description,\n      end,\n      name,\n      postDelimiter,\n      tag,\n      type,\n    } = tokens;\n\n    if (\n      preventAtMiddleLines &&\n      !end && !tag && !type && !name &&\n      (\n        !allowWhitespace && middleAsterisks.test(description) ||\n        allowWhitespace && middleAsterisks.test(postDelimiter + description)\n      )\n    ) {\n      // console.log('description', JSON.stringify(description));\n      const fix = () => {\n        tokens.description = description.replace(middleAsterisks, '');\n      };\n\n      utils.reportJSDoc(\n        'Should be no multiple asterisks on middle lines.',\n        {\n          line: number,\n        },\n        fix,\n        true,\n      );\n\n      return true;\n    }\n\n    if (!preventAtEnd || !end) {\n      return false;\n    }\n\n    const isSingleLineBlock = delimiter === '/**';\n    const delim = isSingleLineBlock ? '*' : delimiter;\n    const endAsterisks = allowWhitespace ?\n      (isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS) :\n      (isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS);\n\n    const endingAsterisksAndSpaces = (\n      allowWhitespace ? postDelimiter + description + delim : description + delim\n    ).match(\n      endAsterisks,\n    );\n\n    if (\n      !endingAsterisksAndSpaces ||\n      !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n    ) {\n      return false;\n    }\n\n    const endFix = () => {\n      if (!isSingleLineBlock) {\n        tokens.delimiter = '';\n      }\n\n      tokens.description = (description + delim).replace(endAsterisks, '');\n    };\n\n    utils.reportJSDoc(\n      'Should be no multiple asterisks on end lines.',\n      {\n        line: number,\n      },\n      endFix,\n      true,\n    );\n\n    return true;\n  });\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: 'Prevents use of multiple asterisks at the beginning of lines.',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/no-multi-asterisks.md#repos-sticky-header',\n    },\n    fixable: 'code',\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          allowWhitespace: {\n            description: `Set to \\`true\\` if you wish to allow asterisks after a space (as with Markdown):\n\n\\`\\`\\`js\n/**\n * *bold* text\n */\n\\`\\`\\`\n\nDefaults to \\`false\\`.`,\n            type: 'boolean',\n          },\n          preventAtEnd: {\n            description: `Prevent the likes of this:\n\n\\`\\`\\`js\n/**\n *\n *\n **/\n\\`\\`\\`\n\nDefaults to \\`true\\`.`,\n            type: 'boolean',\n          },\n          preventAtMiddleLines: {\n            description: `Prevent the likes of this:\n\n\\`\\`\\`js\n/**\n *\n **\n */\n\\`\\`\\`\n\nDefaults to \\`true\\`.`,\n            type: 'boolean',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}