{"version":3,"file":"index-esm.cjs","names":["_objectDeepMerge","require","_indexCjs","_interopRequireDefault","_buildForbidRuleDefinition","_buildRejectOrPreferRuleDefinition","_getJsdocProcessorPlugin","e","__esModule","default","_default","exports","index","jsdoc","cfg","outputConfig","plugins","config","TypeError","configs","rules","name","basePath","files","ignores","language","languageOptions","linterOptions","processor","extraRuleDefinitions","Error","forbid","contextName","contexts","description","url","Object","entries","buildForbidRuleDefinition","preferTypes","typeName","overrideSettings","buildRejectOrPreferRuleDefinition","settings","mergeSettings","merge","includes","structuredTags","next","required","rejects"],"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":[]}