{"version":3,"file":"noMultiAsterisks.cjs","names":["iterateJsdoc"],"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":";;;;;;AAAA;AAA8C;AAE9C,MAAM,sBAAsB,GAAG,qBAAqB;AACpD,MAAM,wBAAwB,GAAG,OAAO;AAExC,MAAM,6BAA6B,GAAG,0BAA0B;AAChE,MAAM,+BAA+B,GAAG,wBAAwB;AAEhE,MAAM,+BAA+B,GAAG,aAAa;AACrD,MAAM,iCAAiC,GAAG,WAAW;AAAC,iCAEvC,IAAAA,qBAAY,EAAC,CAAC;EAC3B,OAAO;EACP,KAAK;EACL;AACF,CAAC,KAAK;EACJ,MAAM;IACJ,eAAe,GAAG,KAAK;IACvB,YAAY,GAAG,IAAI;IACnB,oBAAoB,GAAG;EACzB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAM,eAAe,GAAG,eAAe,GAAG,wBAAwB,GAAG,sBAAsB;EAE3F,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjB,MAAM;IACN;EACF,CAAC,KAAK;IACJ,MAAM;MACJ,SAAS;MACT,WAAW;MACX,GAAG;MACH,IAAI;MACJ,aAAa;MACb,GAAG;MACH;IACF,CAAC,GAAG,MAAM;IAEV,IACE,oBAAoB,IACpB,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAE5B,CAAC,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IACrD,eAAe,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,CACrE,EACD;MACA;MACA,MAAM,GAAG,GAAG,MAAM;QAChB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;MAC/D,CAAC;MAED,KAAK,CAAC,WAAW,CACf,kDAAkD,EAClD;QACE,IAAI,EAAE;MACR,CAAC,EACD,GAAG,EACH,IACF,CAAC;MAED,OAAO,IAAI;IACb;IAEA,IAAI,CAAC,YAAY,IAAI,CAAC,GAAG,EAAE;MACzB,OAAO,KAAK;IACd;IAEA,MAAM,iBAAiB,GAAG,SAAS,KAAK,KAAK;IAC7C,MAAM,KAAK,GAAG,iBAAiB,GAAG,GAAG,GAAG,SAAS;IACjD,MAAM,YAAY,GAAG,eAAe,GACjC,iBAAiB,GAAG,+BAA+B,GAAG,iCAAiC,GACvF,iBAAiB,GAAG,6BAA6B,GAAG,+BAAgC;IAEvF,MAAM,wBAAwB,GAAG,CAC/B,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,EAC3E,KAAK,CACL,YACF,CAAC;IAED,IACE,CAAC,wBAAwB,IACzB,CAAC,iBAAiB,IAAI,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACxF;MACA,OAAO,KAAK;IACd;IAEA,MAAM,MAAM,GAAG,MAAM;MACnB,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,CAAC,SAAS,GAAG,EAAE;MACvB;MAEA,MAAM,CAAC,WAAW,GAAG,CAAC,WAAW,GAAG,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,WAAW,CACf,+CAA+C,EAC/C;MACE,IAAI,EAAE;IACR,CAAC,EACD,MAAM,EACN,IACF,CAAC;IAED,OAAO,IAAI;EACb,CAAC,CAAC;AACJ,CAAC,EAAE;EACD,gBAAgB,EAAE,IAAI;EACtB,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,+DAA+D;MAC5E,GAAG,EAAE;IACP,CAAC;IACD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CACN;MACE,oBAAoB,EAAE,KAAK;MAC3B,UAAU,EAAE;QACV,eAAe,EAAE;UACf,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;UACX,IAAI,EAAE;QACR,CAAC;QACD,YAAY,EAAE;UACZ,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;UACV,IAAI,EAAE;QACR,CAAC;QACD,oBAAoB,EAAE;UACpB,WAAW,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;UACV,IAAI,EAAE;QACR;MACF,CAAC;MACD,IAAI,EAAE;IACR,CAAC,CACF;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA","ignoreList":[]}