eslint-plugin-jsdoc
Version:
JSDoc linting rules for ESLint.
1 lines • 8.04 kB
Source Map (JSON)
{"version":3,"file":"index-esm.cjs","names":["index","buildForbidRuleDefinition","buildRejectOrPreferRuleDefinition","merge"],"sources":["../src/index-esm.js"],"sourcesContent":["/* eslint-disable perfectionist/sort-imports -- For auto-generate; Do not remove */\nimport {\n merge,\n} from 'object-deep-merge';\n\n// BEGIN REPLACE\nimport index from './index-cjs.js';\nimport {\n buildForbidRuleDefinition,\n} from './buildForbidRuleDefinition.js';\nimport {\n buildRejectOrPreferRuleDefinition,\n} from './buildRejectOrPreferRuleDefinition.js';\n\n// eslint-disable-next-line unicorn/prefer-export-from --- Reusing `index`\nexport default index;\n// END REPLACE\n\n/**\n * @type {((\n * cfg?: import('eslint').Linter.Config & {\n * config?: `flat/${import('./index-cjs.js').ConfigGroups}${import('./index-cjs.js').ConfigVariants}${import('./index-cjs.js').ErrorLevelVariants}`,\n * mergeSettings?: boolean,\n * settings?: Partial<import('./iterateJsdoc.js').Settings>,\n * rules?: {[key in keyof import('./rules.d.ts').Rules]?: import('eslint').Linter.RuleEntry<import('./rules.d.ts').Rules[key]>},\n * extraRuleDefinitions?: {\n * forbid?: {\n * [contextName: string]: {\n * description?: string,\n * url?: string,\n * contexts: (string|{\n * message: string,\n * context: string,\n * comment: string\n * })[]\n * }\n * },\n * preferTypes?: {\n * [typeName: string]: {\n * description: string,\n * overrideSettings: {\n * [typeNodeName: string]: {\n * message: string,\n * replacement?: false|string,\n * unifyParentAndChildTypeChecks?: boolean,\n * }\n * },\n * url: string,\n * }\n * }\n * }\n * }\n * ) => import('eslint').Linter.Config)}\n */\nexport const jsdoc = function (cfg) {\n /** @type {import('eslint').Linter.Config} */\n let outputConfig = {\n plugins: {\n jsdoc: index,\n },\n };\n\n if (cfg) {\n if (cfg.config) {\n // @ts-expect-error Security check\n if (cfg.config === '__proto__') {\n throw new TypeError('Disallowed config value');\n }\n\n outputConfig = /** @type {import('eslint').Linter.Config} */ (index.configs[cfg.config]);\n }\n\n if (cfg.rules) {\n outputConfig.rules = {\n ...outputConfig.rules,\n ...cfg.rules,\n };\n }\n\n if (cfg.plugins) {\n outputConfig.plugins = {\n ...outputConfig.plugins,\n ...cfg.plugins,\n };\n }\n\n if (cfg.name) {\n outputConfig.name = cfg.name;\n }\n\n if (cfg.basePath) {\n outputConfig.basePath = cfg.basePath;\n }\n\n if (cfg.files) {\n outputConfig.files = cfg.files;\n }\n\n if (cfg.ignores) {\n outputConfig.ignores = cfg.ignores;\n }\n\n if (cfg.language) {\n outputConfig.language = cfg.language;\n }\n\n if (cfg.languageOptions) {\n outputConfig.languageOptions = cfg.languageOptions;\n }\n\n if (cfg.linterOptions) {\n outputConfig.linterOptions = cfg.linterOptions;\n }\n\n if (cfg.processor) {\n outputConfig.processor = cfg.processor;\n }\n\n if (cfg.extraRuleDefinitions) {\n if (!outputConfig.plugins?.jsdoc?.rules) {\n throw new Error('JSDoc plugin required for `extraRuleDefinitions`');\n }\n\n if (cfg.extraRuleDefinitions.forbid) {\n for (const [\n contextName,\n {\n contexts,\n description,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.forbid)) {\n outputConfig.plugins.jsdoc.rules[`forbid-${contextName}`] =\n buildForbidRuleDefinition({\n contextName,\n contexts,\n description,\n url,\n });\n }\n }\n\n if (cfg.extraRuleDefinitions.preferTypes) {\n for (const [\n typeName,\n {\n description,\n overrideSettings,\n url,\n },\n ] of Object.entries(cfg.extraRuleDefinitions.preferTypes)) {\n outputConfig.plugins.jsdoc.rules[`prefer-type-${typeName}`] =\n buildRejectOrPreferRuleDefinition({\n description,\n overrideSettings,\n typeName,\n url,\n });\n }\n }\n }\n }\n\n outputConfig.settings = {\n jsdoc: cfg?.mergeSettings === false ?\n cfg.settings :\n merge(\n {},\n cfg?.settings ?? {},\n cfg?.config?.includes('recommended') ?\n {\n // We may need to drop these for \"typescript\" (non-\"flavor\") configs,\n // if support is later added: https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html\n structuredTags: {\n next: {\n required: [\n 'type',\n ],\n },\n rejects: {\n required: [\n 'type',\n ],\n },\n },\n } :\n {},\n ),\n };\n\n return outputConfig;\n};\n\nexport {\n getJsdocProcessorPlugin,\n} from './getJsdocProcessorPlugin.js';\n"],"mappings":"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","ignoreList":[]}