{"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":[]}