{"version":3,"file":"getJsdocProcessorPlugin.cjs","names":["_jsdocUtils","require","_jsdoccomment","espree","_interopRequireWildcard","_htmlEntities","_nodeFs","_nodePath","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","version","JSON","parse","readFileSync","join","__dirname","likelyNestedJSDocIndentSpace","preTagSpaceLength","firstLinePrefixLength","hasCaptionRegex","escapeStringRegexp","str","replaceAll","countChars","ch","match","RegExp","length","getLinesCols","text","matchLines","colDelta","slice","lastIndexOf","getJsdocProcessorPlugin","options","allowedLanguagesToProcess","captionRequired","checkDefaults","checkExamples","checkParams","checkProperties","exampleCodeRegex","matchingFileName","matchingFileNameDefaults","matchingFileNameParams","matchingFileNameProperties","paddedIndent","parser","undefined","rejectExampleCodeRegex","sourceType","exampleCodeRegExp","rejectExampleCodeRegExp","getRegexFromString","otherInfo","extraMessages","getTextsAndFileNames","jsdoc","jsFileName","commentLineCols","textsAndFileNames","checkSource","cols","defaultFileName","ext","filename","lines","skipInit","source","sources","tag","line","targetTagName","push","nonJSPrefacingCols","nonJSPrefacingLines","string","addSourceInfo","src","file","number","codeStartLine","codeStartCol","_","code","test","String","fromCodePoint","Number","parseInt","decode","level","targetSource","getFilenameInfo","includes","replace","filenameInfo","forEachPreferredTag","description","trim","getTagDescription","tagName","getPreferredTagName","hasTag","matchingFilenameInfo","column","message","ruleId","severity","matches","exec","groups","language","toLowerCase","startingIndex","lastStringCount","exampleCode","lastIndex","n0","n1","index","preMatch","preMatchLines","nonJSPreface","nonJSPrefaceLineCount","idx","indexOf","charsInLastLine","global","meta","name","processors","examples","postprocess","jsMessages","messages","entries","msg","endColumn","endLine","fatal","messageText","fix","codeCtxLine","codeCtxColumn","startLine","startCol","ret","concat","preprocess","ast","parseForESLint","comment","ecmaVersion","jsdocComments","comments","filter","value","map","start","range","textToStart","parseComment","flatMap","error","console","log","supportsAutofix","exports"],"sources":["../src/getJsdocProcessorPlugin.js"],"sourcesContent":["import {\n  forEachPreferredTag,\n  getPreferredTagName,\n  getRegexFromString,\n  getTagDescription,\n  hasTag,\n} from './jsdocUtils.js';\nimport {\n  parseComment,\n} from '@es-joy/jsdoccomment';\nimport * as espree from 'espree';\nimport {\n  decode,\n} from 'html-entities';\nimport {\n  readFileSync,\n} from 'node:fs';\nimport {\n  join,\n} from 'node:path';\n/**\n * @import {\n *   Integer,\n *   JsdocBlockWithInline,\n * } from './iterateJsdoc.js';\n * @import {\n *   ESLint,\n *   Linter,\n * } from 'eslint';\n */\n\nconst {\n  version,\n} = JSON.parse(\n  readFileSync(join(import.meta.dirname, '../package.json'), 'utf8'),\n);\n\n// const zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\n\n// If a space is present, we should ignore it\nconst firstLinePrefixLength = preTagSpaceLength;\n\nconst hasCaptionRegex = /^\\s*<caption>([\\s\\S]*?)<\\/caption>/v;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nconst escapeStringRegexp = (str) => {\n  return str.replaceAll(/[.*+?^$\\{\\}\\(\\)\\|\\[\\]\\\\]/gv, '\\\\$&');\n};\n\n/**\n * @param {string} str\n * @param {string} ch\n * @returns {Integer}\n */\nconst countChars = (str, ch) => {\n  return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/**\n * @param {string} text\n * @returns {[\n *   Integer,\n *   Integer\n * ]}\n */\nconst getLinesCols = (text) => {\n  const matchLines = countChars(text, '\\n');\n\n  const colDelta = matchLines ?\n    text.slice(text.lastIndexOf('\\n') + 1).length :\n    text.length;\n\n  return [\n    matchLines, colDelta,\n  ];\n};\n\n/**\n * @typedef {number} Integer\n */\n/**\n * @typedef {object} JsdocProcessorOptions\n * @property {boolean} [captionRequired] Require captions for example tags\n * @property {Integer} [paddedIndent] See docs\n * @property {boolean} [checkDefaults] See docs\n * @property {boolean} [checkParams] See docs\n * @property {boolean} [checkExamples] See docs\n * @property {boolean} [checkProperties] See docs\n * @property {string} [matchingFileName] See docs\n * @property {string} [matchingFileNameDefaults] See docs\n * @property {string} [matchingFileNameParams] See docs\n * @property {string} [matchingFileNameProperties] See docs\n * @property {string|RegExp} [exampleCodeRegex] See docs\n * @property {string|RegExp} [rejectExampleCodeRegex] See docs\n * @property {string[]} [allowedLanguagesToProcess] See docs\n * @property {\"script\"|\"module\"} [sourceType] See docs\n * @property {import('eslint').Linter.ESTreeParser|import('eslint').Linter.NonESTreeParser} [parser] See docs\n */\n\n/**\n * We use a function for the ability of the user to pass in a config, but\n * without requiring all users of the plugin to do so.\n * @param {JsdocProcessorOptions} [options]\n * @returns {ESLint.Plugin}\n */\nexport const getJsdocProcessorPlugin = (options = {}) => {\n  /**\n   * @typedef {{\n   *   text: string,\n   *   filename: string|null|undefined\n   * }} TextAndFileName\n   */\n\n  const {\n    allowedLanguagesToProcess = [\n      'js', 'ts', 'javascript', 'typescript',\n    ],\n    captionRequired = false,\n    checkDefaults = false,\n    checkExamples = true,\n    checkParams = false,\n    checkProperties = false,\n    exampleCodeRegex = null,\n    matchingFileName = null,\n    matchingFileNameDefaults = null,\n    matchingFileNameParams = null,\n    matchingFileNameProperties = null,\n    paddedIndent = 0,\n    parser = undefined,\n    rejectExampleCodeRegex = null,\n    sourceType = 'module',\n  } = options;\n\n  /** @type {RegExp} */\n  let exampleCodeRegExp;\n  /** @type {RegExp} */\n  let rejectExampleCodeRegExp;\n\n  if (exampleCodeRegex) {\n    exampleCodeRegExp = typeof exampleCodeRegex === 'string' ?\n      getRegexFromString(exampleCodeRegex) :\n      exampleCodeRegex;\n  }\n\n  if (rejectExampleCodeRegex) {\n    rejectExampleCodeRegExp = typeof rejectExampleCodeRegex === 'string' ?\n      getRegexFromString(rejectExampleCodeRegex) :\n      rejectExampleCodeRegex;\n  }\n\n  /**\n   * @type {{\n   *   targetTagName: string,\n   *   ext: string,\n   *   codeStartLine: number,\n   *   codeStartCol: number,\n   *   nonJSPrefacingCols: number,\n   *   commentLineCols: [number, number]\n   * }[]}\n   */\n  const otherInfo = [];\n\n  /** @type {import('eslint').Linter.LintMessage[]} */\n  let extraMessages = [];\n\n  /**\n   * @param {JsdocBlockWithInline} jsdoc\n   * @param {string} jsFileName\n   * @param {[number, number]} commentLineCols\n   */\n  const getTextsAndFileNames = (jsdoc, jsFileName, commentLineCols) => {\n    /**\n     * @type {TextAndFileName[]}\n     */\n    const textsAndFileNames = [];\n\n    /**\n     * @param {{\n     *   filename: string|null,\n     *   defaultFileName: string|undefined,\n     *   source: string,\n     *   targetTagName: string,\n     *   rules?: import('eslint').Linter.RulesRecord|undefined,\n     *   lines?: Integer,\n     *   cols?: Integer,\n     *   skipInit?: boolean,\n     *   ext: string,\n     *   sources?: {\n     *     nonJSPrefacingCols: Integer,\n     *     nonJSPrefacingLines: Integer,\n     *     string: string,\n     *   }[],\n     *   tag?: import('comment-parser').Spec & {\n     *     line?: Integer,\n     *   }|{\n     *     line: Integer,\n     *   }\n     * }} cfg\n     */\n    const checkSource = ({\n      cols = 0,\n      defaultFileName,\n      ext,\n      filename,\n      lines = 0,\n      skipInit,\n      source,\n      sources = [],\n      tag = {\n        line: 0,\n      },\n      targetTagName,\n    }) => {\n      if (!skipInit) {\n        sources.push({\n          nonJSPrefacingCols: cols,\n          nonJSPrefacingLines: lines,\n          string: source,\n        });\n      }\n\n      /**\n       * @param {{\n       *   nonJSPrefacingCols: Integer,\n       *   nonJSPrefacingLines: Integer,\n       *   string: string\n       * }} cfg\n       */\n      const addSourceInfo = function ({\n        nonJSPrefacingCols,\n        nonJSPrefacingLines,\n        string,\n      }) {\n        const src = paddedIndent ?\n          string.replaceAll(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'gv'), '\\n') :\n          string;\n\n        // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n        const file = filename || defaultFileName;\n\n        if (!('line' in tag)) {\n          tag.line = tag.source[0].number;\n        }\n\n        // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n        const codeStartLine = /**\n                               * @type {import('comment-parser').Spec & {\n                               *     line: Integer,\n                               * }}\n                               */ (tag).line + nonJSPrefacingLines;\n        const codeStartCol = likelyNestedJSDocIndentSpace;\n\n        textsAndFileNames.push({\n          filename: file,\n          // See https://github.com/gajus/eslint-plugin-jsdoc/issues/710\n          text: src.replaceAll(/(?<=\\*)\\\\(?=\\\\*\\/)/gv, '').replaceAll(/&([^\\s;]+);/gv, (_, code) => {\n            // Dec\n            if ((/^#\\d+$/v).test(code)) {\n              return String.fromCodePoint(Number.parseInt(code.slice(1), 10));\n            }\n\n            // Hex\n            if ((/^#x\\d+$/v).test(code)) {\n              return String.fromCodePoint(Number.parseInt(code.slice(2), 16));\n            }\n\n            return decode(_, {\n              level: 'html5',\n            });\n          }),\n        });\n        otherInfo.push({\n          codeStartCol,\n          codeStartLine,\n          commentLineCols,\n          ext,\n          nonJSPrefacingCols,\n          targetTagName,\n        });\n      };\n\n      for (const targetSource of sources) {\n        addSourceInfo(targetSource);\n      }\n    };\n\n    /**\n     *\n     * @param {string|null} filename\n     * @param {string} [ext] Since `eslint-plugin-markdown` v2, and\n     *   ESLint 7, this is the default which other JS-fenced rules will used.\n     *   Formerly \"md\" was the default.\n     * @returns {{\n     *   defaultFileName: string|undefined,\n     *   filename: string|null,\n     *   ext: string\n     * }}\n     */\n    const getFilenameInfo = (filename, ext = 'md/*.js') => {\n      let defaultFileName;\n      if (!filename) {\n        if (typeof jsFileName === 'string' && jsFileName.includes('.')) {\n          defaultFileName = jsFileName.replace(/\\.[^.]*$/v, `.${ext}`);\n        } else {\n          defaultFileName = `dummy.${ext}`;\n        }\n      }\n\n      return {\n        defaultFileName,\n        ext,\n        filename,\n      };\n    };\n\n    if (checkDefaults) {\n      const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n      forEachPreferredTag(jsdoc, 'default', (tag, targetTagName) => {\n        if (!tag.description.trim()) {\n          return;\n        }\n\n        checkSource({\n          source: `(${getTagDescription(tag)})`,\n          targetTagName,\n          ...filenameInfo,\n        });\n      });\n    }\n\n    if (checkParams) {\n      const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n      forEachPreferredTag(jsdoc, 'param', (tag, targetTagName) => {\n        if (!tag.default || !tag.default.trim()) {\n          return;\n        }\n\n        checkSource({\n          source: `(${tag.default})`,\n          targetTagName,\n          ...filenameInfo,\n        });\n      });\n    }\n\n    if (checkProperties) {\n      const filenameInfo = getFilenameInfo(matchingFileNameProperties, 'jsdoc-properties');\n      forEachPreferredTag(jsdoc, 'property', (tag, targetTagName) => {\n        if (!tag.default || !tag.default.trim()) {\n          return;\n        }\n\n        checkSource({\n          source: `(${tag.default})`,\n          targetTagName,\n          ...filenameInfo,\n        });\n      });\n    }\n\n    if (!checkExamples) {\n      return textsAndFileNames;\n    }\n\n    const tagName = /** @type {string} */ (getPreferredTagName(jsdoc, {\n      tagName: 'example',\n    }));\n    if (!hasTag(jsdoc, tagName)) {\n      return textsAndFileNames;\n    }\n\n    const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n    forEachPreferredTag(jsdoc, 'example', (tag, targetTagName) => {\n      let source = /** @type {string} */ (getTagDescription(tag));\n      const match = source.match(hasCaptionRegex);\n\n      if (captionRequired && (!match || !match[1].trim())) {\n        extraMessages.push({\n          column: commentLineCols[1] + 1,\n          line: 1 + commentLineCols[0] + (tag.line ?? tag.source[0].number),\n          message: `@${targetTagName} error - Caption is expected for examples.`,\n          ruleId: 'jsdoc/example-missing-caption',\n          severity: 2,\n        });\n        return;\n      }\n\n      source = source.replace(hasCaptionRegex, '');\n      const [\n        lines,\n        cols,\n      ] = match ? getLinesCols(match[0]) : [\n        0, 0,\n      ];\n\n      if (exampleCodeRegex && !exampleCodeRegExp.test(source) ||\n        rejectExampleCodeRegex && rejectExampleCodeRegExp.test(source)\n      ) {\n        return;\n      }\n\n      // If `allowedLanguagesToProcess` is falsy, all languages should be processed.\n      if (allowedLanguagesToProcess) {\n        const matches = (/^\\s*```(?<language>\\S+)([\\s\\S]*)```\\s*$/v).exec(source);\n        if (matches?.groups && !allowedLanguagesToProcess.includes(\n          matches.groups.language.toLowerCase(),\n        )) {\n          return;\n        }\n      }\n\n      const sources = [];\n      let skipInit = false;\n      if (exampleCodeRegex) {\n        let nonJSPrefacingCols = 0;\n        let nonJSPrefacingLines = 0;\n\n        let startingIndex = 0;\n        let lastStringCount = 0;\n\n        let exampleCode;\n        exampleCodeRegExp.lastIndex = 0;\n        while ((exampleCode = exampleCodeRegExp.exec(source)) !== null) {\n          const {\n            '0': n0,\n            '1': n1,\n            index,\n          } = exampleCode;\n\n          // Count anything preceding user regex match (can affect line numbering)\n          const preMatch = source.slice(startingIndex, index);\n\n          const [\n            preMatchLines,\n            colDelta,\n          ] = getLinesCols(preMatch);\n\n          let nonJSPreface;\n          let nonJSPrefaceLineCount;\n          if (n1) {\n            const idx = n0.indexOf(n1);\n            nonJSPreface = n0.slice(0, idx);\n            nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n          } else {\n            nonJSPreface = '';\n            nonJSPrefaceLineCount = 0;\n          }\n\n          nonJSPrefacingLines += lastStringCount + preMatchLines + nonJSPrefaceLineCount;\n\n          // Ignore `preMatch` delta if newlines here\n          if (nonJSPrefaceLineCount) {\n            const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n            nonJSPrefacingCols += charsInLastLine;\n          } else {\n            nonJSPrefacingCols += colDelta + nonJSPreface.length;\n          }\n\n          const string = n1 || n0;\n          sources.push({\n            nonJSPrefacingCols,\n            nonJSPrefacingLines,\n            string,\n          });\n          startingIndex = exampleCodeRegExp.lastIndex;\n          lastStringCount = countChars(string, '\\n');\n          if (!exampleCodeRegExp.global) {\n            break;\n          }\n        }\n\n        skipInit = true;\n      }\n\n      checkSource({\n        cols,\n        lines,\n        skipInit,\n        source,\n        sources,\n        tag,\n        targetTagName,\n        ...matchingFilenameInfo,\n      });\n    });\n\n    return textsAndFileNames;\n  };\n\n  // See https://eslint.org/docs/latest/extend/plugins#processors-in-plugins\n  // See https://eslint.org/docs/latest/extend/custom-processors\n  // From https://github.com/eslint/eslint/issues/14745#issuecomment-869457265\n  /*\n    {\n      \"files\": [\"*.js\", \"*.ts\"],\n      \"processor\": \"jsdoc/example\" // a pretended value here\n    },\n    {\n      \"files\": [\n        \"*.js/*_jsdoc-example.js\",\n        \"*.ts/*_jsdoc-example.js\",\n        \"*.js/*_jsdoc-example.ts\"\n      ],\n      \"rules\": {\n        // specific rules for examples in jsdoc only here\n        // And other rules for `.js` and `.ts` will also be enabled for them\n      }\n    }\n  */\n  return {\n    meta: {\n      name: 'eslint-plugin-jsdoc/processor',\n      version,\n    },\n    processors: {\n      examples: {\n        meta: {\n          name: 'eslint-plugin-jsdoc/preprocessor',\n          version,\n        },\n        /**\n         * @param {import('eslint').Linter.LintMessage[][]} messages\n         * @param {string} filename\n         */\n        postprocess ([\n          jsMessages,\n          ...messages\n        // eslint-disable-next-line no-unused-vars -- Placeholder\n        ], filename) {\n          for (const [\n            idx,\n            message,\n          ] of messages.entries()) {\n            const {\n              codeStartCol,\n              codeStartLine,\n              commentLineCols,\n              nonJSPrefacingCols,\n              targetTagName,\n            } = otherInfo[idx];\n\n            for (const msg of message) {\n              const {\n                column,\n                endColumn,\n                endLine,\n                fatal,\n                line,\n                message: messageText,\n                ruleId,\n                severity,\n\n                // Todo: Make fixable\n                // fix\n                // fix: {range: [number, number], text: string}\n                // suggestions: {desc: , messageId:, fix: }[],\n              } = msg;\n              delete msg.fix;\n\n              const [\n                codeCtxLine,\n                codeCtxColumn,\n              ] = commentLineCols;\n              const startLine = codeCtxLine + codeStartLine + line;\n\n              // Seems to need one more now\n              const startCol = 1 +\n                codeCtxColumn + codeStartCol + (\n              // This might not work for line 0, but line 0 is unlikely for examples\n                line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n              ) + column;\n\n              msg.message = '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n                (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n                (fatal ? 'Fatal: ' : '') +\n                messageText;\n              msg.line = startLine;\n              msg.column = startCol;\n              msg.endLine = endLine ? startLine + endLine : startLine;\n              // added `- column` to offset what `endColumn` already seemed to include\n              msg.endColumn = endColumn ? startCol - column + endColumn : startCol;\n            }\n          }\n\n          const ret = [\n            ...jsMessages,\n          ].concat(...messages, ...extraMessages);\n          extraMessages = [];\n          return ret;\n        },\n\n        /**\n         * @param {string} text\n         * @param {string} filename\n         * @returns {(string | Linter.ProcessorFile)[]}\n         */\n        preprocess (text, filename) {\n          try {\n            let ast;\n\n            // May be running a second time so catch and ignore\n            try {\n              ast = parser ?\n                // @ts-expect-error Should be present\n                parser.parseForESLint(text, {\n                  comment: true,\n                  ecmaVersion: 'latest',\n                  sourceType,\n                }).ast :\n                espree.parse(text, {\n                  comment: true,\n                  ecmaVersion: 'latest',\n                  sourceType,\n                });\n            } catch {\n              return [\n                text,\n              ];\n            }\n\n            /** @type {[number, number][]} */\n            const commentLineCols = [];\n            const jsdocComments = /** @type {import('estree').Comment[]} */ (\n              /**\n               * @type {import('estree').Program & {\n               *   comments?: import('estree').Comment[]\n               * }}\n               */\n              (ast).comments\n            ).filter((comment) => {\n              return (/^\\*\\s/v).test(comment.value);\n            }).map((comment) => {\n              const [\n                start,\n                /* c8 ignore next -- Unsupporting processors only? */\n              ] = comment.range ?? [];\n              const textToStart = text.slice(0, start);\n\n              const [\n                lines,\n                cols,\n              ] = getLinesCols(textToStart);\n\n              // const lines = [...textToStart.matchAll(/\\n/gv)].length\n              // const lastLinePos = textToStart.lastIndexOf('\\n');\n              // const cols = lastLinePos === -1\n              //   ? 0\n              //   : textToStart.slice(lastLinePos).length;\n              commentLineCols.push([\n                lines, cols,\n              ]);\n              return parseComment(comment);\n            });\n\n            return [\n              text,\n              ...jsdocComments.flatMap((jsdoc, idx) => {\n                return getTextsAndFileNames(\n                  jsdoc,\n                  filename,\n                  commentLineCols[idx],\n                );\n              }).filter(\n                /**\n                 * @param {TextAndFileName} file\n                 * @returns {file is Linter.ProcessorFile}\n                 */\n                (file) => {\n                  return file !== null && file !== undefined;\n                },\n              ),\n            ];\n          /* c8 ignore next 6 */\n          } catch (error) {\n            // eslint-disable-next-line no-console -- Debugging\n            console.log('err', filename, error);\n          }\n\n          return [];\n        },\n        supportsAutofix: true,\n      },\n    },\n  };\n};\n"],"mappings":"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","ignoreList":[]}