{"version":3,"file":"checkExamples.cjs","names":["eslint","iterateJsdoc","semver","ESLint"],"sources":["../../src/rules/checkExamples.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport eslint, {\n  ESLint,\n} from 'eslint';\nimport semver from 'semver';\n\nconst {\n  // @ts-expect-error Older ESLint\n  CLIEngine,\n} = eslint;\n\nconst 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 {import('../iterateJsdoc.js').Integer}\n */\nconst countChars = (str, ch) => {\n  return (str.match(new RegExp(escapeStringRegexp(ch), 'gv')) || []).length;\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultMdRules = {\n  // \"always\" newline rule at end unlikely in sample code\n  '@stylistic/eol-last': 0,\n\n  // Often wish to start `@example` code after newline; also may use\n  //   empty lines for spacing\n  '@stylistic/no-multiple-empty-lines': 0,\n\n  // Can generally look nicer to pad a little even if code imposes more stringency\n  '@stylistic/padded-blocks': 0,\n\n  '@typescript-eslint/no-unused-vars': 0,\n\n  // \"always\" newline rule at end unlikely in sample code\n  'eol-last': 0,\n\n  // Wouldn't generally expect example paths to resolve relative to JS file\n  'import/no-unresolved': 0,\n\n  // Snippets likely too short to always include import/export info\n  'import/unambiguous': 0,\n\n  'jsdoc/require-file-overview': 0,\n\n  // The end of a multiline comment would end the comment the example is in.\n  'jsdoc/require-jsdoc': 0,\n\n  // See import/no-unresolved\n  'n/no-missing-import': 0,\n  'n/no-missing-require': 0,\n\n  // Unlikely to have inadvertent debugging within examples\n  'no-console': 0,\n\n  // Often wish to start `@example` code after newline; also may use\n  //   empty lines for spacing\n  'no-multiple-empty-lines': 0,\n  // Many variables in examples will be `undefined`\n  'no-undef': 0,\n\n  // Common to define variables for clarity without always using them\n  'no-unused-vars': 0,\n\n  // See import/no-unresolved\n  'node/no-missing-import': 0,\n\n  'node/no-missing-require': 0,\n\n  // Can generally look nicer to pad a little even if code imposes more stringency\n  'padded-blocks': 0,\n};\n\n/** @type {import('eslint').Linter.RulesRecord} */\nconst defaultExpressionRules = {\n  ...defaultMdRules,\n  '@stylistic/quotes': [\n    'error', 'double',\n  ],\n  '@stylistic/semi': [\n    'error', 'never',\n  ],\n  '@typescript-eslint/no-unused-expressions': 'off',\n  'chai-friendly/no-unused-expressions': 'off',\n  'no-empty-function': 'off',\n  'no-new': 'off',\n  'no-unused-expressions': 'off',\n  quotes: [\n    'error', 'double',\n  ],\n  semi: [\n    'error', 'never',\n  ],\n  strict: 'off',\n};\n\n/**\n * @param {string} text\n * @returns {[\n *   import('../iterateJsdoc.js').Integer,\n *   import('../iterateJsdoc.js').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\nexport default iterateJsdoc(({\n  context,\n  globalState,\n  report,\n  utils,\n}) => {\n  if (semver.gte(ESLint.version, '8.0.0')) {\n    report(\n      'This rule does not work for ESLint 8+; you should disable this rule and use' +\n        'the processor mentioned in the docs.',\n      null,\n      {\n        column: 1,\n        line: 1,\n      },\n    );\n\n    return;\n  }\n\n  if (!globalState.has('checkExamples-matchingFileName')) {\n    globalState.set('checkExamples-matchingFileName', new Map());\n  }\n\n  const matchingFileNameMap = /** @type {Map<string, string>} */ (\n    globalState.get('checkExamples-matchingFileName')\n  );\n\n  const options = context.options[0] || {};\n  let {\n    exampleCodeRegex = null,\n    rejectExampleCodeRegex = null,\n  } = options;\n  const {\n    allowInlineConfig = true,\n    baseConfig = {},\n    captionRequired = false,\n    checkDefaults = false,\n    checkEslintrc = true,\n    checkParams = false,\n    checkProperties = false,\n    configFile,\n    matchingFileName = null,\n    matchingFileNameDefaults = null,\n    matchingFileNameParams = null,\n    matchingFileNameProperties = null,\n    noDefaultExampleRules = false,\n    paddedIndent = 0,\n    reportUnusedDisableDirectives = true,\n  } = options;\n\n  // Make this configurable?\n  /**\n   * @type {never[]}\n   */\n  const rulePaths = [];\n\n  const mdRules = noDefaultExampleRules ? undefined : defaultMdRules;\n\n  const expressionRules = noDefaultExampleRules ? undefined : defaultExpressionRules;\n\n  if (exampleCodeRegex) {\n    exampleCodeRegex = utils.getRegexFromString(exampleCodeRegex);\n  }\n\n  if (rejectExampleCodeRegex) {\n    rejectExampleCodeRegex = utils.getRegexFromString(rejectExampleCodeRegex);\n  }\n\n  /**\n   * @param {{\n   *   filename: string,\n   *   defaultFileName: string|undefined,\n   *   source: string,\n   *   targetTagName: string,\n   *   rules?: import('eslint').Linter.RulesRecord|undefined,\n   *   lines?: import('../iterateJsdoc.js').Integer,\n   *   cols?: import('../iterateJsdoc.js').Integer,\n   *   skipInit?: boolean,\n   *   sources?: {\n   *     nonJSPrefacingCols: import('../iterateJsdoc.js').Integer,\n   *     nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n   *     string: string,\n   *   }[],\n   *   tag?: import('comment-parser').Spec & {\n   *     line?: import('../iterateJsdoc.js').Integer,\n   *   }|{\n   *     line: import('../iterateJsdoc.js').Integer,\n   *   }\n   * }} cfg\n   */\n  const checkSource = ({\n    cols = 0,\n    defaultFileName,\n    filename,\n    lines = 0,\n    rules = expressionRules,\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: import('../iterateJsdoc.js').Integer,\n     *   nonJSPrefacingLines: import('../iterateJsdoc.js').Integer,\n     *   string: string\n     * }} cfg\n     */\n    const checkRules = function ({\n      nonJSPrefacingCols,\n      nonJSPrefacingLines,\n      string,\n    }) {\n      const cliConfig = {\n        allowInlineConfig,\n        baseConfig,\n        configFile,\n        reportUnusedDisableDirectives,\n        rulePaths,\n        rules,\n        useEslintrc: checkEslintrc,\n      };\n      const cliConfigStr = JSON.stringify(cliConfig);\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 fileNameMapKey = filename ?\n        'a' + cliConfigStr + filename :\n        'b' + cliConfigStr + defaultFileName;\n      const file = filename || defaultFileName;\n      let cliFile;\n      if (matchingFileNameMap.has(fileNameMapKey)) {\n        cliFile = matchingFileNameMap.get(fileNameMapKey);\n      } else {\n        const cli = new CLIEngine(cliConfig);\n        let config;\n        if (filename || checkEslintrc) {\n          config = cli.getConfigForFile(file);\n        }\n\n        // We need a new instance to ensure that the rules that may only\n        //  be available to `file` (if it has its own `.eslintrc`),\n        //  will be defined.\n        cliFile = new CLIEngine({\n          allowInlineConfig,\n          baseConfig: {\n            ...baseConfig,\n            ...config,\n          },\n          configFile,\n          reportUnusedDisableDirectives,\n          rulePaths,\n          rules,\n          useEslintrc: false,\n        });\n        matchingFileNameMap.set(fileNameMapKey, cliFile);\n      }\n\n      const {\n        results: [\n          {\n            messages,\n          },\n        ],\n      } = cliFile.executeOnText(src);\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: import('../iterateJsdoc.js').Integer,\n                             * }}\n                             */ (tag).line + nonJSPrefacingLines;\n      const codeStartCol = likelyNestedJSDocIndentSpace;\n\n      for (const {\n        column,\n        line,\n        message,\n        ruleId,\n        severity,\n      } of messages) {\n        const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n        const startCol = codeStartCol + (\n\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        report(\n          '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n            (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n            message,\n          null,\n          {\n            column: startCol,\n            line: startLine,\n          },\n        );\n      }\n    };\n\n    for (const targetSource of sources) {\n      checkRules(targetSource);\n    }\n  };\n\n  /**\n   *\n   * @param {string} 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 {{defaultFileName: string|undefined, filename: string}}\n   */\n  const getFilenameInfo = (filename, ext = 'md/*.js') => {\n    let defaultFileName;\n    if (!filename) {\n      // @ts-expect-error ESLint < 10\n      const jsFileName = context.getFilename();\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      filename,\n    };\n  };\n\n  if (checkDefaults) {\n    const filenameInfo = getFilenameInfo(matchingFileNameDefaults, 'jsdoc-defaults');\n    utils.forEachPreferredTag('default', (tag, targetTagName) => {\n      if (!tag.description.trim()) {\n        return;\n      }\n\n      checkSource({\n        source: `(${utils.getTagDescription(tag)})`,\n        targetTagName,\n        ...filenameInfo,\n      });\n    });\n  }\n\n  if (checkParams) {\n    const filenameInfo = getFilenameInfo(matchingFileNameParams, 'jsdoc-params');\n    utils.forEachPreferredTag('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    utils.forEachPreferredTag('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  const tagName = /** @type {string} */ (utils.getPreferredTagName({\n    tagName: 'example',\n  }));\n  if (!utils.hasTag(tagName)) {\n    return;\n  }\n\n  const matchingFilenameInfo = getFilenameInfo(matchingFileName);\n\n  utils.forEachPreferredTag('example', (tag, targetTagName) => {\n    let source = /** @type {string} */ (utils.getTagDescription(tag));\n    const match = source.match(hasCaptionRegex);\n\n    if (captionRequired && (!match || !match[1].trim())) {\n      report('Caption is expected for examples.', null, tag);\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 && !exampleCodeRegex.test(source) ||\n      rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n    ) {\n      return;\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      exampleCodeRegex.lastIndex = 0;\n      while ((exampleCode = exampleCodeRegex.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 = exampleCodeRegex.lastIndex;\n        lastStringCount = countChars(string, '\\n');\n        if (!exampleCodeRegex.global) {\n          break;\n        }\n      }\n\n      skipInit = true;\n    }\n\n    checkSource({\n      cols,\n      lines,\n      rules: mdRules,\n      skipInit,\n      source,\n      sources,\n      tag,\n      targetTagName,\n      ...matchingFilenameInfo,\n    });\n  });\n}, {\n  iterateAllJsdocs: true,\n  meta: {\n    docs: {\n      description: '@deprecated - Use `getJsdocProcessorPlugin` processor; ensures that (JavaScript) samples within `@example` tags adhere to ESLint rules.',\n      url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header',\n    },\n    schema: [\n      {\n        additionalProperties: false,\n        properties: {\n          allowInlineConfig: {\n            default: true,\n            type: 'boolean',\n          },\n          baseConfig: {\n            type: 'object',\n          },\n          captionRequired: {\n            default: false,\n            type: 'boolean',\n          },\n          checkDefaults: {\n            default: false,\n            type: 'boolean',\n          },\n          checkEslintrc: {\n            default: true,\n            type: 'boolean',\n          },\n          checkParams: {\n            default: false,\n            type: 'boolean',\n          },\n          checkProperties: {\n            default: false,\n            type: 'boolean',\n          },\n          configFile: {\n            type: 'string',\n          },\n          exampleCodeRegex: {\n            type: 'string',\n          },\n          matchingFileName: {\n            type: 'string',\n          },\n          matchingFileNameDefaults: {\n            type: 'string',\n          },\n          matchingFileNameParams: {\n            type: 'string',\n          },\n          matchingFileNameProperties: {\n            type: 'string',\n          },\n          noDefaultExampleRules: {\n            default: false,\n            type: 'boolean',\n          },\n          paddedIndent: {\n            default: 0,\n            type: 'integer',\n          },\n          rejectExampleCodeRegex: {\n            type: 'string',\n          },\n          reportUnusedDisableDirectives: {\n            default: true,\n            type: 'boolean',\n          },\n        },\n        type: 'object',\n      },\n    ],\n    type: 'suggestion',\n  },\n});\n"],"mappings":"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","ignoreList":[]}