eslint-plugin-jsdoc 61.5.0 → 61.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -275,7 +275,7 @@ Finally, enable all of the rules that you would like to use.
275
275
  "jsdoc/no-restricted-syntax": 1,
276
276
  "jsdoc/no-types": 1, // Recommended for TS configs
277
277
  "jsdoc/no-undefined-types": 1, // Recommended for non-TS configs
278
- "jsdoc/rejct-any-type": 1, // Recommended
278
+ "jsdoc/reject-any-type": 1, // Recommended
279
279
  "jsdoc/reject-function-type": 1, // Recommended
280
280
  "jsdoc/require-asterisk-prefix": 1,
281
281
  "jsdoc/require-description": 1,
@@ -311,7 +311,6 @@ Finally, enable all of the rules that you would like to use.
311
311
  "jsdoc/sort-tags": 1,
312
312
  "jsdoc/tag-lines": 1, // Recommended
313
313
  "jsdoc/text-escaping": 1,
314
- "jsdoc/ts-prefer-function-type": 1,
315
314
  "jsdoc/ts-method-signature-style": 1,
316
315
  "jsdoc/ts-prefer-function-type": 1,
317
316
  "jsdoc/ts-no-unnecessary-template-expression": 1,
@@ -293,7 +293,7 @@ const getDocPaths = () => {
293
293
  if (stat.isDirectory()) {
294
294
  return _nodeFs.default.readdirSync(innerBasePath).map(innerDocFile => {
295
295
  return _nodePath.default.join(writeInnerBasePath, innerDocFile);
296
- }).sort((a, b) => {
296
+ }).toSorted((a, b) => {
297
297
  const newA = a.replace(/\.md/v, '');
298
298
  const newB = b.replace(/\.md/v, '');
299
299
  return newA < newB ? -1 : newB > newA ? 1 : 0;
@@ -1 +1 @@
1
- {"version":3,"file":"generateDocs.cjs","names":["_index","_interopRequireDefault","require","_decamelize","_gitdown","_glob","_nodeFs","_nodePath","e","__esModule","default","_interopRequireWildcard","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","dirname","__dirname","escapeDescription","str","replaceAll","trimCode","code","lines","replace","trimEnd","split","firsLineIndentation","match","lastLineIndentation","length","firstIndentSize","lastIndentSize","map","line","index","lineIndentSize","Math","min","slice","join","formatCodeSnippet","setup","ruleName","paragraphs","push","settings","JSON","stringify","options","errors","message","getAssertions","assertionFiles","glob","path","resolve","filter","file","includes","toReversed","assertionNames","filePath","basename","assertionCodes","Promise","all","idx","codes","specifier","then","s","decamelize","separator","invalid","ignoreReadme","valid","assertions","fromEntries","assertionName","getSomeBranch","gitConfig","fs","readFileSync","toString","branch","exec","extraFiles","otherPaths","extraFile","generateDocs","schemas","tableRows","docContents","decamelized","plugin","rules","meta","schema","ruleDescription","docs","description","undefined","Error","fixable","recommended","configs","tsRecommended","tsRecommendedFlavor","row","docPath","gitdown","Gitdown","readFile","setConfig","gitinfo","defaultBranchName","gitPath","registerHelper","compile","toSorted","dc","convertFromSchema","jIdx","arr","nesting","ret","type","items","properties","property","innerSchema","entries","repeat","enum","val","anyOf","docContent","_assertionsBlock","passingFailing","ruleAssertions","getDocPaths","basePath","writeBasePath","docPaths","readdirSync","flatMap","docFile","innerBasePath","writeInnerBasePath","stat","statSync","isFile","isDirectory","innerDocFile","sort","a","b","newA","newB","Boolean","generateDocsAndWriteToDisk","destPath","writeFileSync","assertDocsAreUpToDate","isUpToDate","main","hasCheckFlag","process","argv","error","console","exit","_default","exports","module"],"sources":["../src/bin/generateDocs.js"],"sourcesContent":["/**\n * This script is used to inline assertions into the README.md documents.\n */\nimport plugin from '../index.js';\nimport decamelize from 'decamelize';\nimport Gitdown from 'gitdown';\nimport {\n glob,\n} from 'glob';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst dirname = import.meta.dirname;\n\n/**\n * @param {string} str\n */\nconst escapeDescription = (str) => {\n return str.replaceAll(/(?<!`|\\* +|'|\\/\\/ )@\\w+/gv, '<code>$&</code>');\n};\n\n/**\n * @param {string} code\n * @returns {string}\n */\nconst trimCode = (code) => {\n let lines = code.replace(/^\\n/v, '').trimEnd().split('\\n');\n\n const firsLineIndentation = lines[0].match(/^\\s+/v);\n const lastLineIndentation = lines[lines.length - 1].match(/^\\s+/v);\n\n const firstIndentSize = firsLineIndentation ? firsLineIndentation[0].length : 0;\n const lastIndentSize = lastLineIndentation ? lastLineIndentation[0].length : 0;\n\n lines = lines.map((line, index) => {\n const lineIndentSize = firstIndentSize !== 0 || index === 0 ?\n Math.min(firstIndentSize, lastIndentSize) :\n lastIndentSize;\n\n return line.slice(lineIndentSize);\n });\n\n return lines.join('\\n').replaceAll('\\r', '\\\\r');\n};\n\n/**\n * @param {import('eslint').RuleTester.InvalidTestCase|import('eslint').RuleTester.ValidTestCase} setup\n * @param {string} ruleName\n * @returns {string}\n */\nconst formatCodeSnippet = (setup, ruleName) => {\n const paragraphs = [];\n\n paragraphs.push(trimCode(setup.code));\n\n if (setup.settings) {\n paragraphs.push(`// Settings: ${JSON.stringify(setup.settings)}`);\n }\n\n if (setup.options) {\n paragraphs.push(`// \"jsdoc/${ruleName}\": [\"error\"|\"warn\", ${JSON.stringify(setup.options).slice(1)}`);\n }\n\n if ('errors' in setup) {\n paragraphs.push(`// Message: ${\n /** @type {Array<import('eslint').RuleTester.TestCaseError>} */ (\n setup.errors\n )[0].message}`);\n }\n\n return paragraphs.join('\\n');\n};\n\nconst getAssertions = async () => {\n const assertionFiles = (await glob(path.resolve(dirname, '../../test/rules/assertions/*.js'))).filter((file) => {\n return !file.includes('flatConfig');\n }).toReversed();\n\n const assertionNames = assertionFiles.map((filePath) => {\n return path.basename(filePath, '.js');\n });\n\n const assertionCodes = await Promise.all(assertionFiles.map(async (filePath, idx) => {\n /**\n * @type {{\n * invalid: (import('eslint').RuleTester.InvalidTestCase & {ignoreReadme?: true})[],\n * valid: (import('eslint').RuleTester.ValidTestCase & {ignoreReadme?: true})[]\n * }}\n */\n const codes = (await import(filePath)).default;\n\n const ruleName = decamelize(assertionNames[idx], {\n separator: '-',\n });\n\n return {\n invalid: codes.invalid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n valid: codes.valid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n };\n }));\n\n return {\n assertionNames,\n assertions: Object.fromEntries(assertionNames.map((assertionName, index) => {\n return [\n assertionName, assertionCodes[index],\n ];\n })),\n };\n};\n\nconst getSomeBranch = () => {\n const gitConfig = fs.readFileSync(path.join(dirname, '../../.git/config')).toString();\n const [\n , branch,\n ] = /\\[branch \"([^\"]+)\"\\]/v.exec(gitConfig) || [];\n\n return branch;\n};\n\n// Scan the directory for these instead?\nconst extraFiles = [\n 'settings.md',\n 'advanced.md',\n 'processors.md',\n 'README.md',\n];\n\nconst otherPaths = extraFiles.map((extraFile) => {\n return path.join(dirname, '..', '..', '.README', extraFile);\n});\n\nconst generateDocs = async () => {\n const {\n assertionNames,\n assertions,\n } = await getAssertions();\n\n /** @type {import('json-schema').JSONSchema4[][]} */\n const schemas = [];\n\n /**\n * @type {{\n * decamelized: string,\n * row: string\n * }[]}\n */\n const tableRows = [];\n\n const docContents = await Promise.all([\n ...assertionNames.map((assertionName) => {\n const decamelized = decamelize(assertionName, {\n separator: '-',\n });\n schemas.push(\n /** @type {import('json-schema').JSONSchema4[]} */\n (plugin.rules?.[decamelized].meta?.schema),\n );\n const ruleDescription = plugin.rules?.[decamelized]?.meta?.docs?.description;\n if (ruleDescription === undefined) {\n throw new Error(`Rule ${assertionName} missing description`);\n }\n\n const fixable = plugin.rules?.[decamelized]?.meta?.fixable ?? null;\n\n const recommended = plugin.configs['flat/recommended'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommended = plugin.configs['flat/recommended-typescript'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommendedFlavor = plugin.configs['flat/recommended-typescript-flavor'].rules?.['jsdoc/' + decamelized] !== 'off';\n\n tableRows.push({\n decamelized,\n row: `|${\n recommended ?\n (tsRecommended && tsRecommendedFlavor ?\n ':heavy_check_mark:' :\n ':heavy_check_mark: (' + (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') +\n ')'\n ) :\n (tsRecommended || tsRecommendedFlavor ?\n (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') :\n '')\n }|${fixable ? ':wrench:' : ''}| [${decamelized}](./docs/rules/${decamelized}.md#readme) | ${ruleDescription} |`,\n });\n\n return path.join(\n dirname, '..', '..', '.README', 'rules', decamelized + '.md',\n );\n }),\n ...otherPaths,\n ].map(async (docPath, idx) => {\n const gitdown = await Gitdown.readFile(docPath);\n\n gitdown.setConfig({\n gitinfo: {\n defaultBranchName: getSomeBranch() || 'master',\n gitPath: path.join(dirname, '../../.git'),\n },\n });\n\n gitdown.registerHelper('rules-table', {\n compile () {\n return tableRows.toSorted(({\n decamelized,\n }, {\n decamelized: dc,\n }) => {\n return decamelized < dc ? -1 : (decamelized > dc ? 1 : 0);\n }).map(({\n row,\n }) => {\n return row;\n }).join('\\n');\n },\n });\n\n gitdown.registerHelper('options', {\n compile () {\n if (!schemas[idx]) {\n return '';\n }\n\n /**\n * @param {import('json-schema').JSONSchema4} schema\n * @param {number} jIdx\n * @param {import('json-schema').JSONSchema4[]} arr\n * @param {number} [nesting]\n */\n const convertFromSchema = (schema, jIdx, arr, nesting = 3) => {\n let ret = '';\n switch (schema.type) {\n case 'array':\n ret += convertFromSchema(\n /** @type {import('json-schema').JSONSchema4} */ (schema.items),\n 0,\n [],\n nesting + 1,\n );\n break;\n case 'object':\n if (!schema.properties) {\n break;\n }\n\n if (jIdx === 0) {\n ret += (nesting > 3 ? '\\n' : '') + (arr.length <= 1 ? 'A single' : 'An') +\n ' options object has the following properties.\\n';\n } else {\n ret += '\\n\\nThe next option is an object with the following properties.\\n';\n }\n\n if (schema.description) {\n ret += `\\n${escapeDescription(schema.description)}\\n`;\n }\n\n for (const [\n property,\n innerSchema,\n ] of Object.entries(schema.properties)) {\n const {\n description,\n type,\n } = innerSchema;\n if (!description) {\n throw new Error(\n 'Missing description for property ' + property + ' for rule ' + assertionNames[idx] + ' with schema ' + JSON.stringify(innerSchema),\n );\n }\n\n ret += '\\n' + '#'.repeat(nesting) + ` \\`${property}\\`\n\n${type === 'object' && innerSchema.properties ? '' : escapeDescription(description) + '\\n'}`;\n if (type === 'object' || type === 'array') {\n ret += convertFromSchema(innerSchema, 0, [], nesting + 1);\n }\n }\n\n break;\n case 'string':\n if (jIdx !== 0) {\n throw new Error('Unexpected string schema');\n }\n\n // If a simple string, should be documented by parent\n if (schema.enum) {\n ret += 'The first option is a string with the following possible values: ';\n ret += schema.enum?.map((val) => {\n return `\"${val}\"`;\n }).join(', ') + '.\\n';\n }\n\n if (schema.description) {\n ret += escapeDescription(schema.description);\n }\n\n break;\n default:\n // Describe on parent object\n if (schema.anyOf) {\n break;\n }\n\n throw new Error('Unrecognized type ' + schema.type + ' for schema: ' +\n JSON.stringify(schema));\n }\n\n return ret;\n };\n\n return schemas[idx].map((schema, jIdx, arr) => {\n return convertFromSchema(schema, jIdx, arr);\n }).join('');\n },\n });\n\n return gitdown.get();\n }));\n\n return docContents.map((docContent) => {\n return docContent.replaceAll(\n /<!-- assertions-(passing|failing) ([a-z]+?) -->/gvi,\n /**\n * @param {string} _assertionsBlock\n * @param {string} passingFailing\n * @param {string} ruleName\n * @returns {string}\n */\n (_assertionsBlock, passingFailing, ruleName) => {\n const ruleAssertions = assertions[ruleName];\n\n if (!ruleAssertions) {\n throw new Error(`No assertions available for rule \"${ruleName}\".`);\n }\n\n return passingFailing === 'failing' ?\n 'The following patterns are considered problems:\\n\\n````ts\\n' +\n ruleAssertions.invalid.join('\\n\\n') + '\\n````\\n\\n' :\n 'The following patterns are not considered problems:\\n\\n````ts\\n' +\n ruleAssertions.valid.join('\\n\\n') + '\\n````\\n';\n },\n // Allow relative paths in source for #902 but generate compiled file in\n // manner compatible with GitHub and npmjs.com\n ).replaceAll('(../#', '(#user-content-eslint-plugin-jsdoc-');\n });\n};\n\n/**\n * @returns {string[]}\n */\nconst getDocPaths = () => {\n const basePath = path.join(dirname, '..', '..', '.README');\n const writeBasePath = path.join(dirname, '..', '..', 'docs');\n const docPaths = /** @type {string[]} */ (fs.readdirSync(basePath).flatMap((docFile) => {\n if (extraFiles.includes(docFile)) {\n // Will get path separately below\n return null;\n }\n\n if (docFile === '.DS_Store') {\n return null;\n }\n\n const innerBasePath = path.join(basePath, docFile);\n const writeInnerBasePath = path.join(writeBasePath, docFile);\n const stat = fs.statSync(innerBasePath);\n if (stat.isFile()) {\n // Currently settings and advanced\n return writeInnerBasePath;\n }\n\n if (stat.isDirectory()) {\n return fs.readdirSync(innerBasePath).map((innerDocFile) => {\n return path.join(writeInnerBasePath, innerDocFile);\n }).sort((a, b) => {\n const newA = a.replace(/\\.md/v, '');\n const newB = b.replace(/\\.md/v, '');\n return newA < newB ? -1 : (newB > newA ? 1 : 0);\n });\n }\n\n return null;\n }).filter(Boolean));\n\n return [\n ...docPaths,\n ...extraFiles.slice(0, -1).map((extraFile) => {\n return path.join(dirname, '..', '..', 'docs', extraFile);\n }),\n path.join(dirname, '..', '..', 'README.md'),\n ];\n};\n\nconst generateDocsAndWriteToDisk = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const destPath = docPaths[idx];\n fs.writeFileSync(destPath, docContent);\n }\n};\n\nconst assertDocsAreUpToDate = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const docPath = docPaths[idx];\n const isUpToDate = fs.readFileSync(docPath, 'utf8') === docContent;\n\n if (!isUpToDate) {\n throw new Error('Docs are not up to date, please run `pnpm run create-docs` to update it.');\n }\n }\n};\n\nconst main = async () => {\n try {\n const hasCheckFlag = process.argv.includes('--check');\n\n if (hasCheckFlag) {\n await assertDocsAreUpToDate();\n } else {\n await generateDocsAndWriteToDisk();\n }\n } catch (error) {\n /* eslint-disable-next-line no-console */\n console.error(error);\n\n process.exit(1);\n }\n};\n\nmain();\n\nexport default generateDocs;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"generateDocs.cjs","names":["_index","_interopRequireDefault","require","_decamelize","_gitdown","_glob","_nodeFs","_nodePath","e","__esModule","default","_interopRequireWildcard","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","dirname","__dirname","escapeDescription","str","replaceAll","trimCode","code","lines","replace","trimEnd","split","firsLineIndentation","match","lastLineIndentation","length","firstIndentSize","lastIndentSize","map","line","index","lineIndentSize","Math","min","slice","join","formatCodeSnippet","setup","ruleName","paragraphs","push","settings","JSON","stringify","options","errors","message","getAssertions","assertionFiles","glob","path","resolve","filter","file","includes","toReversed","assertionNames","filePath","basename","assertionCodes","Promise","all","idx","codes","specifier","then","s","decamelize","separator","invalid","ignoreReadme","valid","assertions","fromEntries","assertionName","getSomeBranch","gitConfig","fs","readFileSync","toString","branch","exec","extraFiles","otherPaths","extraFile","generateDocs","schemas","tableRows","docContents","decamelized","plugin","rules","meta","schema","ruleDescription","docs","description","undefined","Error","fixable","recommended","configs","tsRecommended","tsRecommendedFlavor","row","docPath","gitdown","Gitdown","readFile","setConfig","gitinfo","defaultBranchName","gitPath","registerHelper","compile","toSorted","dc","convertFromSchema","jIdx","arr","nesting","ret","type","items","properties","property","innerSchema","entries","repeat","enum","val","anyOf","docContent","_assertionsBlock","passingFailing","ruleAssertions","getDocPaths","basePath","writeBasePath","docPaths","readdirSync","flatMap","docFile","innerBasePath","writeInnerBasePath","stat","statSync","isFile","isDirectory","innerDocFile","a","b","newA","newB","Boolean","generateDocsAndWriteToDisk","destPath","writeFileSync","assertDocsAreUpToDate","isUpToDate","main","hasCheckFlag","process","argv","error","console","exit","_default","exports","module"],"sources":["../src/bin/generateDocs.js"],"sourcesContent":["/**\n * This script is used to inline assertions into the README.md documents.\n */\nimport plugin from '../index.js';\nimport decamelize from 'decamelize';\nimport Gitdown from 'gitdown';\nimport {\n glob,\n} from 'glob';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst dirname = import.meta.dirname;\n\n/**\n * @param {string} str\n */\nconst escapeDescription = (str) => {\n return str.replaceAll(/(?<!`|\\* +|'|\\/\\/ )@\\w+/gv, '<code>$&</code>');\n};\n\n/**\n * @param {string} code\n * @returns {string}\n */\nconst trimCode = (code) => {\n let lines = code.replace(/^\\n/v, '').trimEnd().split('\\n');\n\n const firsLineIndentation = lines[0].match(/^\\s+/v);\n const lastLineIndentation = lines[lines.length - 1].match(/^\\s+/v);\n\n const firstIndentSize = firsLineIndentation ? firsLineIndentation[0].length : 0;\n const lastIndentSize = lastLineIndentation ? lastLineIndentation[0].length : 0;\n\n lines = lines.map((line, index) => {\n const lineIndentSize = firstIndentSize !== 0 || index === 0 ?\n Math.min(firstIndentSize, lastIndentSize) :\n lastIndentSize;\n\n return line.slice(lineIndentSize);\n });\n\n return lines.join('\\n').replaceAll('\\r', '\\\\r');\n};\n\n/**\n * @param {import('eslint').RuleTester.InvalidTestCase|import('eslint').RuleTester.ValidTestCase} setup\n * @param {string} ruleName\n * @returns {string}\n */\nconst formatCodeSnippet = (setup, ruleName) => {\n const paragraphs = [];\n\n paragraphs.push(trimCode(setup.code));\n\n if (setup.settings) {\n paragraphs.push(`// Settings: ${JSON.stringify(setup.settings)}`);\n }\n\n if (setup.options) {\n paragraphs.push(`// \"jsdoc/${ruleName}\": [\"error\"|\"warn\", ${JSON.stringify(setup.options).slice(1)}`);\n }\n\n if ('errors' in setup) {\n paragraphs.push(`// Message: ${\n /** @type {Array<import('eslint').RuleTester.TestCaseError>} */ (\n setup.errors\n )[0].message}`);\n }\n\n return paragraphs.join('\\n');\n};\n\nconst getAssertions = async () => {\n const assertionFiles = (await glob(path.resolve(dirname, '../../test/rules/assertions/*.js'))).filter((file) => {\n return !file.includes('flatConfig');\n }).toReversed();\n\n const assertionNames = assertionFiles.map((filePath) => {\n return path.basename(filePath, '.js');\n });\n\n const assertionCodes = await Promise.all(assertionFiles.map(async (filePath, idx) => {\n /**\n * @type {{\n * invalid: (import('eslint').RuleTester.InvalidTestCase & {ignoreReadme?: true})[],\n * valid: (import('eslint').RuleTester.ValidTestCase & {ignoreReadme?: true})[]\n * }}\n */\n const codes = (await import(filePath)).default;\n\n const ruleName = decamelize(assertionNames[idx], {\n separator: '-',\n });\n\n return {\n invalid: codes.invalid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n valid: codes.valid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n };\n }));\n\n return {\n assertionNames,\n assertions: Object.fromEntries(assertionNames.map((assertionName, index) => {\n return [\n assertionName, assertionCodes[index],\n ];\n })),\n };\n};\n\nconst getSomeBranch = () => {\n const gitConfig = fs.readFileSync(path.join(dirname, '../../.git/config')).toString();\n const [\n , branch,\n ] = /\\[branch \"([^\"]+)\"\\]/v.exec(gitConfig) || [];\n\n return branch;\n};\n\n// Scan the directory for these instead?\nconst extraFiles = [\n 'settings.md',\n 'advanced.md',\n 'processors.md',\n 'README.md',\n];\n\nconst otherPaths = extraFiles.map((extraFile) => {\n return path.join(dirname, '..', '..', '.README', extraFile);\n});\n\nconst generateDocs = async () => {\n const {\n assertionNames,\n assertions,\n } = await getAssertions();\n\n /** @type {import('json-schema').JSONSchema4[][]} */\n const schemas = [];\n\n /**\n * @type {{\n * decamelized: string,\n * row: string\n * }[]}\n */\n const tableRows = [];\n\n const docContents = await Promise.all([\n ...assertionNames.map((assertionName) => {\n const decamelized = decamelize(assertionName, {\n separator: '-',\n });\n schemas.push(\n /** @type {import('json-schema').JSONSchema4[]} */\n (plugin.rules?.[decamelized].meta?.schema),\n );\n const ruleDescription = plugin.rules?.[decamelized]?.meta?.docs?.description;\n if (ruleDescription === undefined) {\n throw new Error(`Rule ${assertionName} missing description`);\n }\n\n const fixable = plugin.rules?.[decamelized]?.meta?.fixable ?? null;\n\n const recommended = plugin.configs['flat/recommended'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommended = plugin.configs['flat/recommended-typescript'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommendedFlavor = plugin.configs['flat/recommended-typescript-flavor'].rules?.['jsdoc/' + decamelized] !== 'off';\n\n tableRows.push({\n decamelized,\n row: `|${\n recommended ?\n (tsRecommended && tsRecommendedFlavor ?\n ':heavy_check_mark:' :\n ':heavy_check_mark: (' + (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') +\n ')'\n ) :\n (tsRecommended || tsRecommendedFlavor ?\n (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') :\n '')\n }|${fixable ? ':wrench:' : ''}| [${decamelized}](./docs/rules/${decamelized}.md#readme) | ${ruleDescription} |`,\n });\n\n return path.join(\n dirname, '..', '..', '.README', 'rules', decamelized + '.md',\n );\n }),\n ...otherPaths,\n ].map(async (docPath, idx) => {\n const gitdown = await Gitdown.readFile(docPath);\n\n gitdown.setConfig({\n gitinfo: {\n defaultBranchName: getSomeBranch() || 'master',\n gitPath: path.join(dirname, '../../.git'),\n },\n });\n\n gitdown.registerHelper('rules-table', {\n compile () {\n return tableRows.toSorted(({\n decamelized,\n }, {\n decamelized: dc,\n }) => {\n return decamelized < dc ? -1 : (decamelized > dc ? 1 : 0);\n }).map(({\n row,\n }) => {\n return row;\n }).join('\\n');\n },\n });\n\n gitdown.registerHelper('options', {\n compile () {\n if (!schemas[idx]) {\n return '';\n }\n\n /**\n * @param {import('json-schema').JSONSchema4} schema\n * @param {number} jIdx\n * @param {import('json-schema').JSONSchema4[]} arr\n * @param {number} [nesting]\n */\n const convertFromSchema = (schema, jIdx, arr, nesting = 3) => {\n let ret = '';\n switch (schema.type) {\n case 'array':\n ret += convertFromSchema(\n /** @type {import('json-schema').JSONSchema4} */ (schema.items),\n 0,\n [],\n nesting + 1,\n );\n break;\n case 'object':\n if (!schema.properties) {\n break;\n }\n\n if (jIdx === 0) {\n ret += (nesting > 3 ? '\\n' : '') + (arr.length <= 1 ? 'A single' : 'An') +\n ' options object has the following properties.\\n';\n } else {\n ret += '\\n\\nThe next option is an object with the following properties.\\n';\n }\n\n if (schema.description) {\n ret += `\\n${escapeDescription(schema.description)}\\n`;\n }\n\n for (const [\n property,\n innerSchema,\n ] of Object.entries(schema.properties)) {\n const {\n description,\n type,\n } = innerSchema;\n if (!description) {\n throw new Error(\n 'Missing description for property ' + property + ' for rule ' + assertionNames[idx] + ' with schema ' + JSON.stringify(innerSchema),\n );\n }\n\n ret += '\\n' + '#'.repeat(nesting) + ` \\`${property}\\`\n\n${type === 'object' && innerSchema.properties ? '' : escapeDescription(description) + '\\n'}`;\n if (type === 'object' || type === 'array') {\n ret += convertFromSchema(innerSchema, 0, [], nesting + 1);\n }\n }\n\n break;\n case 'string':\n if (jIdx !== 0) {\n throw new Error('Unexpected string schema');\n }\n\n // If a simple string, should be documented by parent\n if (schema.enum) {\n ret += 'The first option is a string with the following possible values: ';\n ret += schema.enum?.map((val) => {\n return `\"${val}\"`;\n }).join(', ') + '.\\n';\n }\n\n if (schema.description) {\n ret += escapeDescription(schema.description);\n }\n\n break;\n default:\n // Describe on parent object\n if (schema.anyOf) {\n break;\n }\n\n throw new Error('Unrecognized type ' + schema.type + ' for schema: ' +\n JSON.stringify(schema));\n }\n\n return ret;\n };\n\n return schemas[idx].map((schema, jIdx, arr) => {\n return convertFromSchema(schema, jIdx, arr);\n }).join('');\n },\n });\n\n return gitdown.get();\n }));\n\n return docContents.map((docContent) => {\n return docContent.replaceAll(\n /<!-- assertions-(passing|failing) ([a-z]+?) -->/gvi,\n /**\n * @param {string} _assertionsBlock\n * @param {string} passingFailing\n * @param {string} ruleName\n * @returns {string}\n */\n (_assertionsBlock, passingFailing, ruleName) => {\n const ruleAssertions = assertions[ruleName];\n\n if (!ruleAssertions) {\n throw new Error(`No assertions available for rule \"${ruleName}\".`);\n }\n\n return passingFailing === 'failing' ?\n 'The following patterns are considered problems:\\n\\n````ts\\n' +\n ruleAssertions.invalid.join('\\n\\n') + '\\n````\\n\\n' :\n 'The following patterns are not considered problems:\\n\\n````ts\\n' +\n ruleAssertions.valid.join('\\n\\n') + '\\n````\\n';\n },\n // Allow relative paths in source for #902 but generate compiled file in\n // manner compatible with GitHub and npmjs.com\n ).replaceAll('(../#', '(#user-content-eslint-plugin-jsdoc-');\n });\n};\n\n/**\n * @returns {string[]}\n */\nconst getDocPaths = () => {\n const basePath = path.join(dirname, '..', '..', '.README');\n const writeBasePath = path.join(dirname, '..', '..', 'docs');\n const docPaths = /** @type {string[]} */ (fs.readdirSync(basePath).flatMap((docFile) => {\n if (extraFiles.includes(docFile)) {\n // Will get path separately below\n return null;\n }\n\n if (docFile === '.DS_Store') {\n return null;\n }\n\n const innerBasePath = path.join(basePath, docFile);\n const writeInnerBasePath = path.join(writeBasePath, docFile);\n const stat = fs.statSync(innerBasePath);\n if (stat.isFile()) {\n // Currently settings and advanced\n return writeInnerBasePath;\n }\n\n if (stat.isDirectory()) {\n return fs.readdirSync(innerBasePath).map((innerDocFile) => {\n return path.join(writeInnerBasePath, innerDocFile);\n }).toSorted((a, b) => {\n const newA = a.replace(/\\.md/v, '');\n const newB = b.replace(/\\.md/v, '');\n return newA < newB ? -1 : (newB > newA ? 1 : 0);\n });\n }\n\n return null;\n }).filter(Boolean));\n\n return [\n ...docPaths,\n ...extraFiles.slice(0, -1).map((extraFile) => {\n return path.join(dirname, '..', '..', 'docs', extraFile);\n }),\n path.join(dirname, '..', '..', 'README.md'),\n ];\n};\n\nconst generateDocsAndWriteToDisk = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const destPath = docPaths[idx];\n fs.writeFileSync(destPath, docContent);\n }\n};\n\nconst assertDocsAreUpToDate = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const docPath = docPaths[idx];\n const isUpToDate = fs.readFileSync(docPath, 'utf8') === docContent;\n\n if (!isUpToDate) {\n throw new Error('Docs are not up to date, please run `pnpm run create-docs` to update it.');\n }\n }\n};\n\nconst main = async () => {\n try {\n const hasCheckFlag = process.argv.includes('--check');\n\n if (hasCheckFlag) {\n await assertDocsAreUpToDate();\n } else {\n await generateDocsAndWriteToDisk();\n }\n } catch (error) {\n /* eslint-disable-next-line no-console */\n console.error(error);\n\n process.exit(1);\n }\n};\n\nmain();\n\nexport default generateDocs;\n"],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAGA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AAA6B,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,wBAAAH,CAAA,EAAAI,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,uBAAA,YAAAA,CAAAH,CAAA,EAAAI,CAAA,SAAAA,CAAA,IAAAJ,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAQ,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAT,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAU,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAZ,CAAA,UAAAQ,CAAA,CAAAK,GAAA,CAAAb,CAAA,GAAAQ,CAAA,CAAAM,GAAA,CAAAd,CAAA,EAAAU,CAAA,gBAAAN,CAAA,IAAAJ,CAAA,gBAAAI,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAI,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,EAAAI,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAJ,CAAA,CAAAI,CAAA,WAAAM,CAAA,KAAAV,CAAA,EAAAI,CAAA,KAV7B;AACA;AACA;AAUA,MAAMgB,OAAO,GAAAC,SAAsB;;AAEnC;AACA;AACA;AACA,MAAMC,iBAAiB,GAAIC,GAAG,IAAK;EACjC,OAAOA,GAAG,CAACC,UAAU,CAAC,2BAA2B,EAAE,iBAAiB,CAAC;AACvE,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,QAAQ,GAAIC,IAAI,IAAK;EACzB,IAAIC,KAAK,GAAGD,IAAI,CAACE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAACC,OAAO,CAAC,CAAC,CAACC,KAAK,CAAC,IAAI,CAAC;EAE1D,MAAMC,mBAAmB,GAAGJ,KAAK,CAAC,CAAC,CAAC,CAACK,KAAK,CAAC,OAAO,CAAC;EACnD,MAAMC,mBAAmB,GAAGN,KAAK,CAACA,KAAK,CAACO,MAAM,GAAG,CAAC,CAAC,CAACF,KAAK,CAAC,OAAO,CAAC;EAElE,MAAMG,eAAe,GAAGJ,mBAAmB,GAAGA,mBAAmB,CAAC,CAAC,CAAC,CAACG,MAAM,GAAG,CAAC;EAC/E,MAAME,cAAc,GAAGH,mBAAmB,GAAGA,mBAAmB,CAAC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;EAE9EP,KAAK,GAAGA,KAAK,CAACU,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;IACjC,MAAMC,cAAc,GAAGL,eAAe,KAAK,CAAC,IAAII,KAAK,KAAK,CAAC,GACzDE,IAAI,CAACC,GAAG,CAACP,eAAe,EAAEC,cAAc,CAAC,GACzCA,cAAc;IAEhB,OAAOE,IAAI,CAACK,KAAK,CAACH,cAAc,CAAC;EACnC,CAAC,CAAC;EAEF,OAAOb,KAAK,CAACiB,IAAI,CAAC,IAAI,CAAC,CAACpB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;AACjD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMqB,iBAAiB,GAAGA,CAACC,KAAK,EAAEC,QAAQ,KAAK;EAC7C,MAAMC,UAAU,GAAG,EAAE;EAErBA,UAAU,CAACC,IAAI,CAACxB,QAAQ,CAACqB,KAAK,CAACpB,IAAI,CAAC,CAAC;EAErC,IAAIoB,KAAK,CAACI,QAAQ,EAAE;IAClBF,UAAU,CAACC,IAAI,CAAC,gBAAgBE,IAAI,CAACC,SAAS,CAACN,KAAK,CAACI,QAAQ,CAAC,EAAE,CAAC;EACnE;EAEA,IAAIJ,KAAK,CAACO,OAAO,EAAE;IACjBL,UAAU,CAACC,IAAI,CAAC,aAAaF,QAAQ,uBAAuBI,IAAI,CAACC,SAAS,CAACN,KAAK,CAACO,OAAO,CAAC,CAACV,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;EACvG;EAEA,IAAI,QAAQ,IAAIG,KAAK,EAAE;IACrBE,UAAU,CAACC,IAAI,CAAC,eACd,+DACEH,KAAK,CAACQ,MAAM,CACZ,CAAC,CAAC,CAACC,OAAO,EAAE,CAAC;EACnB;EAEA,OAAOP,UAAU,CAACJ,IAAI,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED,MAAMY,aAAa,GAAG,MAAAA,CAAA,KAAY;EAChC,MAAMC,cAAc,GAAG,CAAC,MAAM,IAAAC,UAAI,EAACC,iBAAI,CAACC,OAAO,CAACxC,OAAO,EAAE,kCAAkC,CAAC,CAAC,EAAEyC,MAAM,CAAEC,IAAI,IAAK;IAC9G,OAAO,CAACA,IAAI,CAACC,QAAQ,CAAC,YAAY,CAAC;EACrC,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;EAEf,MAAMC,cAAc,GAAGR,cAAc,CAACpB,GAAG,CAAE6B,QAAQ,IAAK;IACtD,OAAOP,iBAAI,CAACQ,QAAQ,CAACD,QAAQ,EAAE,KAAK,CAAC;EACvC,CAAC,CAAC;EAEF,MAAME,cAAc,GAAG,MAAMC,OAAO,CAACC,GAAG,CAACb,cAAc,CAACpB,GAAG,CAAC,OAAO6B,QAAQ,EAAEK,GAAG,KAAK;IACnF;AACJ;AACA;AACA;AACA;AACA;IACI,MAAMC,KAAK,GAAG,CAAC,OAAAC,SAAA,QAAAJ,OAAA,CAAA/D,CAAA,IAAAA,CAAA,IAAAmE,SAAA,KAAAC,IAAA,CAAAC,CAAA,IAAAxE,uBAAA,CAAAT,OAAA,CAAAiF,CAAA,KAAaT,QAAQ,CAAC,EAAEhE,OAAO;IAE9C,MAAM6C,QAAQ,GAAG,IAAA6B,mBAAU,EAACX,cAAc,CAACM,GAAG,CAAC,EAAE;MAC/CM,SAAS,EAAE;IACb,CAAC,CAAC;IAEF,OAAO;MACLC,OAAO,EAAEN,KAAK,CAACM,OAAO,CAACjB,MAAM,CAAC,CAAC;QAC7BkB;MACF,CAAC,KAAK;QACJ,OAAO,CAACA,YAAY;MACtB,CAAC,CAAC,CAAC1C,GAAG,CAAES,KAAK,IAAK;QAChB,OAAOD,iBAAiB,CAACC,KAAK,EAAEC,QAAQ,CAAC;MAC3C,CAAC,CAAC;MACFiC,KAAK,EAAER,KAAK,CAACQ,KAAK,CAACnB,MAAM,CAAC,CAAC;QACzBkB;MACF,CAAC,KAAK;QACJ,OAAO,CAACA,YAAY;MACtB,CAAC,CAAC,CAAC1C,GAAG,CAAES,KAAK,IAAK;QAChB,OAAOD,iBAAiB,CAACC,KAAK,EAAEC,QAAQ,CAAC;MAC3C,CAAC;IACH,CAAC;EACH,CAAC,CAAC,CAAC;EAEH,OAAO;IACLkB,cAAc;IACdgB,UAAU,EAAEhE,MAAM,CAACiE,WAAW,CAACjB,cAAc,CAAC5B,GAAG,CAAC,CAAC8C,aAAa,EAAE5C,KAAK,KAAK;MAC1E,OAAO,CACL4C,aAAa,EAAEf,cAAc,CAAC7B,KAAK,CAAC,CACrC;IACH,CAAC,CAAC;EACJ,CAAC;AACH,CAAC;AAED,MAAM6C,aAAa,GAAGA,CAAA,KAAM;EAC1B,MAAMC,SAAS,GAAGC,eAAE,CAACC,YAAY,CAAC5B,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAACoE,QAAQ,CAAC,CAAC;EACrF,MAAM,GACFC,MAAM,CACT,GAAG,uBAAuB,CAACC,IAAI,CAACL,SAAS,CAAC,IAAI,EAAE;EAEjD,OAAOI,MAAM;AACf,CAAC;;AAED;AACA,MAAME,UAAU,GAAG,CACjB,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,CACZ;AAED,MAAMC,UAAU,GAAGD,UAAU,CAACtD,GAAG,CAAEwD,SAAS,IAAK;EAC/C,OAAOlC,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAEyE,SAAS,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAMC,YAAY,GAAG,MAAAA,CAAA,KAAY;EAC/B,MAAM;IACJ7B,cAAc;IACdgB;EACF,CAAC,GAAG,MAAMzB,aAAa,CAAC,CAAC;;EAEzB;EACA,MAAMuC,OAAO,GAAG,EAAE;;EAElB;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,SAAS,GAAG,EAAE;EAEpB,MAAMC,WAAW,GAAG,MAAM5B,OAAO,CAACC,GAAG,CAAC,CACpC,GAAGL,cAAc,CAAC5B,GAAG,CAAE8C,aAAa,IAAK;IACvC,MAAMe,WAAW,GAAG,IAAAtB,mBAAU,EAACO,aAAa,EAAE;MAC5CN,SAAS,EAAE;IACb,CAAC,CAAC;IACFkB,OAAO,CAAC9C,IAAI,CACV;IACCkD,cAAM,CAACC,KAAK,GAAGF,WAAW,CAAC,CAACG,IAAI,EAAEC,MACrC,CAAC;IACD,MAAMC,eAAe,GAAGJ,cAAM,CAACC,KAAK,GAAGF,WAAW,CAAC,EAAEG,IAAI,EAAEG,IAAI,EAAEC,WAAW;IAC5E,IAAIF,eAAe,KAAKG,SAAS,EAAE;MACjC,MAAM,IAAIC,KAAK,CAAC,QAAQxB,aAAa,sBAAsB,CAAC;IAC9D;IAEA,MAAMyB,OAAO,GAAGT,cAAM,CAACC,KAAK,GAAGF,WAAW,CAAC,EAAEG,IAAI,EAAEO,OAAO,IAAI,IAAI;IAElE,MAAMC,WAAW,GAAGV,cAAM,CAACW,OAAO,CAAC,kBAAkB,CAAC,CAACV,KAAK,GAAG,QAAQ,GAAGF,WAAW,CAAC,KAAK,KAAK;IAChG,MAAMa,aAAa,GAAGZ,cAAM,CAACW,OAAO,CAAC,6BAA6B,CAAC,CAACV,KAAK,GAAG,QAAQ,GAAGF,WAAW,CAAC,KAAK,KAAK;IAC7G,MAAMc,mBAAmB,GAAGb,cAAM,CAACW,OAAO,CAAC,oCAAoC,CAAC,CAACV,KAAK,GAAG,QAAQ,GAAGF,WAAW,CAAC,KAAK,KAAK;IAE1HF,SAAS,CAAC/C,IAAI,CAAC;MACbiD,WAAW;MACXe,GAAG,EAAE,IACHJ,WAAW,GACRE,aAAa,IAAIC,mBAAmB,GACnC,oBAAoB,GACpB,sBAAsB,IAAID,aAAa,GAAG,UAAU,GAAG,WAAW,CAAC,GACjE,IAAI,IACHC,mBAAmB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,GAC9D,GAAG,GAEND,aAAa,IAAIC,mBAAmB,GACnC,CAACD,aAAa,GAAG,UAAU,GAAG,WAAW,IACvC,IAAI,IACHC,mBAAmB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC,GAChE,EAAG,IACLJ,OAAO,GAAG,UAAU,GAAG,EAAE,MAAMV,WAAW,kBAAkBA,WAAW,iBAAiBK,eAAe;IAC7G,CAAC,CAAC;IAEF,OAAO5C,iBAAI,CAACf,IAAI,CACdxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE8E,WAAW,GAAG,KACzD,CAAC;EACH,CAAC,CAAC,EACF,GAAGN,UAAU,CACd,CAACvD,GAAG,CAAC,OAAO6E,OAAO,EAAE3C,GAAG,KAAK;IAC5B,MAAM4C,OAAO,GAAG,MAAMC,gBAAO,CAACC,QAAQ,CAACH,OAAO,CAAC;IAE/CC,OAAO,CAACG,SAAS,CAAC;MAChBC,OAAO,EAAE;QACPC,iBAAiB,EAAEpC,aAAa,CAAC,CAAC,IAAI,QAAQ;QAC9CqC,OAAO,EAAE9D,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,YAAY;MAC1C;IACF,CAAC,CAAC;IAEF+F,OAAO,CAACO,cAAc,CAAC,aAAa,EAAE;MACpCC,OAAOA,CAAA,EAAI;QACT,OAAO3B,SAAS,CAAC4B,QAAQ,CAAC,CAAC;UACzB1B;QACF,CAAC,EAAE;UACDA,WAAW,EAAE2B;QACf,CAAC,KAAK;UACJ,OAAO3B,WAAW,GAAG2B,EAAE,GAAG,CAAC,CAAC,GAAI3B,WAAW,GAAG2B,EAAE,GAAG,CAAC,GAAG,CAAE;QAC3D,CAAC,CAAC,CAACxF,GAAG,CAAC,CAAC;UACN4E;QACF,CAAC,KAAK;UACJ,OAAOA,GAAG;QACZ,CAAC,CAAC,CAACrE,IAAI,CAAC,IAAI,CAAC;MACf;IACF,CAAC,CAAC;IAEFuE,OAAO,CAACO,cAAc,CAAC,SAAS,EAAE;MAChCC,OAAOA,CAAA,EAAI;QACT,IAAI,CAAC5B,OAAO,CAACxB,GAAG,CAAC,EAAE;UACjB,OAAO,EAAE;QACX;;QAEA;AACR;AACA;AACA;AACA;AACA;QACQ,MAAMuD,iBAAiB,GAAGA,CAACxB,MAAM,EAAEyB,IAAI,EAAEC,GAAG,EAAEC,OAAO,GAAG,CAAC,KAAK;UAC5D,IAAIC,GAAG,GAAG,EAAE;UACZ,QAAQ5B,MAAM,CAAC6B,IAAI;YACjB,KAAK,OAAO;cACVD,GAAG,IAAIJ,iBAAiB,CACtB,gDAAkDxB,MAAM,CAAC8B,KAAK,EAC9D,CAAC,EACD,EAAE,EACFH,OAAO,GAAG,CACZ,CAAC;cACD;YACF,KAAK,QAAQ;cACX,IAAI,CAAC3B,MAAM,CAAC+B,UAAU,EAAE;gBACtB;cACF;cAEA,IAAIN,IAAI,KAAK,CAAC,EAAE;gBACdG,GAAG,IAAI,CAACD,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,KAAKD,GAAG,CAAC9F,MAAM,IAAI,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,GACxE,iDAAiD;cACnD,CAAC,MAAM;gBACLgG,GAAG,IAAI,mEAAmE;cAC5E;cAEA,IAAI5B,MAAM,CAACG,WAAW,EAAE;gBACtByB,GAAG,IAAI,KAAK5G,iBAAiB,CAACgF,MAAM,CAACG,WAAW,CAAC,IAAI;cACvD;cAEA,KAAK,MAAM,CACT6B,QAAQ,EACRC,WAAW,CACZ,IAAItH,MAAM,CAACuH,OAAO,CAAClC,MAAM,CAAC+B,UAAU,CAAC,EAAE;gBACtC,MAAM;kBACJ5B,WAAW;kBACX0B;gBACF,CAAC,GAAGI,WAAW;gBACf,IAAI,CAAC9B,WAAW,EAAE;kBAChB,MAAM,IAAIE,KAAK,CACb,mCAAmC,GAAG2B,QAAQ,GAAG,YAAY,GAAGrE,cAAc,CAACM,GAAG,CAAC,GAAG,eAAe,GAAGpB,IAAI,CAACC,SAAS,CAACmF,WAAW,CACpI,CAAC;gBACH;gBAEAL,GAAG,IAAI,IAAI,GAAG,GAAG,CAACO,MAAM,CAACR,OAAO,CAAC,GAAG,MAAMK,QAAQ;AAClE;AACA,EAAEH,IAAI,KAAK,QAAQ,IAAII,WAAW,CAACF,UAAU,GAAG,EAAE,GAAG/G,iBAAiB,CAACmF,WAAW,CAAC,GAAG,IAAI,EAAE;gBAC5E,IAAI0B,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,OAAO,EAAE;kBACzCD,GAAG,IAAIJ,iBAAiB,CAACS,WAAW,EAAE,CAAC,EAAE,EAAE,EAAEN,OAAO,GAAG,CAAC,CAAC;gBAC3D;cACF;cAEA;YACF,KAAK,QAAQ;cACX,IAAIF,IAAI,KAAK,CAAC,EAAE;gBACd,MAAM,IAAIpB,KAAK,CAAC,0BAA0B,CAAC;cAC7C;;cAEA;cACA,IAAIL,MAAM,CAACoC,IAAI,EAAE;gBACfR,GAAG,IAAI,mEAAmE;gBAC1EA,GAAG,IAAI5B,MAAM,CAACoC,IAAI,EAAErG,GAAG,CAAEsG,GAAG,IAAK;kBAC/B,OAAO,IAAIA,GAAG,GAAG;gBACnB,CAAC,CAAC,CAAC/F,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK;cACvB;cAEA,IAAI0D,MAAM,CAACG,WAAW,EAAE;gBACtByB,GAAG,IAAI5G,iBAAiB,CAACgF,MAAM,CAACG,WAAW,CAAC;cAC9C;cAEA;YACF;cACE;cACA,IAAIH,MAAM,CAACsC,KAAK,EAAE;gBAChB;cACF;cAEA,MAAM,IAAIjC,KAAK,CAAC,oBAAoB,GAAGL,MAAM,CAAC6B,IAAI,GAAG,eAAe,GAClEhF,IAAI,CAACC,SAAS,CAACkD,MAAM,CAAC,CAAC;UAC7B;UAEA,OAAO4B,GAAG;QACZ,CAAC;QAED,OAAOnC,OAAO,CAACxB,GAAG,CAAC,CAAClC,GAAG,CAAC,CAACiE,MAAM,EAAEyB,IAAI,EAAEC,GAAG,KAAK;UAC7C,OAAOF,iBAAiB,CAACxB,MAAM,EAAEyB,IAAI,EAAEC,GAAG,CAAC;QAC7C,CAAC,CAAC,CAACpF,IAAI,CAAC,EAAE,CAAC;MACb;IACF,CAAC,CAAC;IAEF,OAAOuE,OAAO,CAACtG,GAAG,CAAC,CAAC;EACtB,CAAC,CAAC,CAAC;EAEH,OAAOoF,WAAW,CAAC5D,GAAG,CAAEwG,UAAU,IAAK;IACrC,OAAOA,UAAU,CAACrH,UAAU,CAC1B,oDAAoD;IACpD;AACN;AACA;AACA;AACA;AACA;IACM,CAACsH,gBAAgB,EAAEC,cAAc,EAAEhG,QAAQ,KAAK;MAC9C,MAAMiG,cAAc,GAAG/D,UAAU,CAAClC,QAAQ,CAAC;MAE3C,IAAI,CAACiG,cAAc,EAAE;QACnB,MAAM,IAAIrC,KAAK,CAAC,qCAAqC5D,QAAQ,IAAI,CAAC;MACpE;MAEA,OAAOgG,cAAc,KAAK,SAAS,GACjC,6DAA6D,GAC3DC,cAAc,CAAClE,OAAO,CAAClC,IAAI,CAAC,MAAM,CAAC,GAAG,YAAY,GACpD,iEAAiE,GAC/DoG,cAAc,CAAChE,KAAK,CAACpC,IAAI,CAAC,MAAM,CAAC,GAAG,UAAU;IACpD;IACF;IACA;IACA,CAAC,CAACpB,UAAU,CAAC,OAAO,EAAE,qCAAqC,CAAC;EAC9D,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA,MAAMyH,WAAW,GAAGA,CAAA,KAAM;EACxB,MAAMC,QAAQ,GAAGvF,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC;EAC1D,MAAM+H,aAAa,GAAGxF,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;EAC5D,MAAMgI,QAAQ,GAAG,uBAAyB9D,eAAE,CAAC+D,WAAW,CAACH,QAAQ,CAAC,CAACI,OAAO,CAAEC,OAAO,IAAK;IACtF,IAAI5D,UAAU,CAAC5B,QAAQ,CAACwF,OAAO,CAAC,EAAE;MAChC;MACA,OAAO,IAAI;IACb;IAEA,IAAIA,OAAO,KAAK,WAAW,EAAE;MAC3B,OAAO,IAAI;IACb;IAEA,MAAMC,aAAa,GAAG7F,iBAAI,CAACf,IAAI,CAACsG,QAAQ,EAAEK,OAAO,CAAC;IAClD,MAAME,kBAAkB,GAAG9F,iBAAI,CAACf,IAAI,CAACuG,aAAa,EAAEI,OAAO,CAAC;IAC5D,MAAMG,IAAI,GAAGpE,eAAE,CAACqE,QAAQ,CAACH,aAAa,CAAC;IACvC,IAAIE,IAAI,CAACE,MAAM,CAAC,CAAC,EAAE;MACjB;MACA,OAAOH,kBAAkB;IAC3B;IAEA,IAAIC,IAAI,CAACG,WAAW,CAAC,CAAC,EAAE;MACtB,OAAOvE,eAAE,CAAC+D,WAAW,CAACG,aAAa,CAAC,CAACnH,GAAG,CAAEyH,YAAY,IAAK;QACzD,OAAOnG,iBAAI,CAACf,IAAI,CAAC6G,kBAAkB,EAAEK,YAAY,CAAC;MACpD,CAAC,CAAC,CAAClC,QAAQ,CAAC,CAACmC,CAAC,EAAEC,CAAC,KAAK;QACpB,MAAMC,IAAI,GAAGF,CAAC,CAACnI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,MAAMsI,IAAI,GAAGF,CAAC,CAACpI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACnC,OAAOqI,IAAI,GAAGC,IAAI,GAAG,CAAC,CAAC,GAAIA,IAAI,GAAGD,IAAI,GAAG,CAAC,GAAG,CAAE;MACjD,CAAC,CAAC;IACJ;IAEA,OAAO,IAAI;EACb,CAAC,CAAC,CAACpG,MAAM,CAACsG,OAAO,CAAE;EAEnB,OAAO,CACL,GAAGf,QAAQ,EACX,GAAGzD,UAAU,CAAChD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAACN,GAAG,CAAEwD,SAAS,IAAK;IAC5C,OAAOlC,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAEyE,SAAS,CAAC;EAC1D,CAAC,CAAC,EACFlC,iBAAI,CAACf,IAAI,CAACxB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAC5C;AACH,CAAC;AAED,MAAMgJ,0BAA0B,GAAG,MAAAA,CAAA,KAAY;EAC7C,MAAM,CACJnE,WAAW,EACXmD,QAAQ,CACT,GAAG,MAAM/E,OAAO,CAACC,GAAG,CAAC,CACpBwB,YAAY,CAAC,CAAC,EAAEmD,WAAW,CAAC,CAAC,CAC9B,CAAC;EACF,KAAK,MAAM,CACT1E,GAAG,EACHsE,UAAU,CACX,IAAI5C,WAAW,CAACuC,OAAO,CAAC,CAAC,EAAE;IAC1B,MAAM6B,QAAQ,GAAGjB,QAAQ,CAAC7E,GAAG,CAAC;IAC9Be,eAAE,CAACgF,aAAa,CAACD,QAAQ,EAAExB,UAAU,CAAC;EACxC;AACF,CAAC;AAED,MAAM0B,qBAAqB,GAAG,MAAAA,CAAA,KAAY;EACxC,MAAM,CACJtE,WAAW,EACXmD,QAAQ,CACT,GAAG,MAAM/E,OAAO,CAACC,GAAG,CAAC,CACpBwB,YAAY,CAAC,CAAC,EAAEmD,WAAW,CAAC,CAAC,CAC9B,CAAC;EACF,KAAK,MAAM,CACT1E,GAAG,EACHsE,UAAU,CACX,IAAI5C,WAAW,CAACuC,OAAO,CAAC,CAAC,EAAE;IAC1B,MAAMtB,OAAO,GAAGkC,QAAQ,CAAC7E,GAAG,CAAC;IAC7B,MAAMiG,UAAU,GAAGlF,eAAE,CAACC,YAAY,CAAC2B,OAAO,EAAE,MAAM,CAAC,KAAK2B,UAAU;IAElE,IAAI,CAAC2B,UAAU,EAAE;MACf,MAAM,IAAI7D,KAAK,CAAC,0EAA0E,CAAC;IAC7F;EACF;AACF,CAAC;AAED,MAAM8D,IAAI,GAAG,MAAAA,CAAA,KAAY;EACvB,IAAI;IACF,MAAMC,YAAY,GAAGC,OAAO,CAACC,IAAI,CAAC7G,QAAQ,CAAC,SAAS,CAAC;IAErD,IAAI2G,YAAY,EAAE;MAChB,MAAMH,qBAAqB,CAAC,CAAC;IAC/B,CAAC,MAAM;MACL,MAAMH,0BAA0B,CAAC,CAAC;IACpC;EACF,CAAC,CAAC,OAAOS,KAAK,EAAE;IACd;IACAC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;IAEpBF,OAAO,CAACI,IAAI,CAAC,CAAC,CAAC;EACjB;AACF,CAAC;AAEDN,IAAI,CAAC,CAAC;AAAC,IAAAO,QAAA,GAAAC,OAAA,CAAA/K,OAAA,GAEQ4F,YAAY;AAAAoF,MAAA,CAAAD,OAAA,GAAAA,OAAA,CAAA/K,OAAA","ignoreList":[]}
@@ -1447,7 +1447,6 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, sc, iterati
1447
1447
 
1448
1448
  /** @type {GetClassNode} */
1449
1449
  utils.getClassNode = () => {
1450
- // eslint-disable-next-line canonical/no-use-extend-native -- Not extending
1451
1450
  return [...ancestors, node].toReversed().find(parent => {
1452
1451
  return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);
1453
1452
  }) ?? null;