{"version":3,"file":"buildForbidRuleDefinition.cjs","names":["iterateJsdoc"],"sources":["../src/buildForbidRuleDefinition.js"],"sourcesContent":["import iterateJsdoc from './iterateJsdoc.js';\n\n/**\n * @typedef {(string|{\n *   comment: string,\n *   context: string,\n *   message?: string\n * })[]} Contexts\n */\n\n/**\n * @param {{\n *   contexts?: Contexts,\n *   description?: string,\n *   getContexts?: (\n *     ctxt: import('eslint').Rule.RuleContext,\n *     report: import('./iterateJsdoc.js').Report\n *   ) => Contexts|false,\n *   contextName?: string,\n *   modifyContext?: (context: import('eslint').Rule.RuleContext) => import('eslint').Rule.RuleContext,\n *   schema?: import('eslint').Rule.RuleMetaData['schema']\n *   url?: string,\n * }} cfg\n * @returns {import('eslint').Rule.RuleModule}\n */\nexport const buildForbidRuleDefinition = ({\n  contextName,\n  contexts: cntxts,\n  description,\n  getContexts,\n  modifyContext,\n  schema,\n  url,\n}) => {\n  return iterateJsdoc(({\n    context,\n    info: {\n      comment,\n    },\n    report,\n    utils,\n  }) => {\n    /** @type {Contexts|boolean|undefined} */\n    let contexts = cntxts;\n\n    if (getContexts) {\n      contexts = getContexts(context, report);\n      if (!contexts) {\n        return;\n      }\n    }\n\n    const {\n      contextStr,\n      foundContext,\n    } = utils.findContext(/** @type {Contexts} */ (contexts), comment);\n\n    // We are not on the *particular* matching context/comment, so don't assume\n    //   we need reporting\n    if (!foundContext) {\n      return;\n    }\n\n    const message = /** @type {import('./iterateJsdoc.js').ContextObject} */ (\n      foundContext\n    )?.message ??\n      'Syntax is restricted: {{context}}' +\n        (comment ? ' with {{comment}}' : '');\n\n    report(message, null, null, comment ? {\n      comment,\n      context: contextStr,\n    } : {\n      context: contextStr,\n    });\n  }, {\n    contextSelected: true,\n    meta: {\n      docs: {\n        description: description ?? contextName ?? 'Reports when certain comment structures are present.',\n        url: url ?? 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/advanced.md#user-content-advanced-creating-your-own-rules',\n      },\n      schema: schema ?? [],\n      type: 'suggestion',\n    },\n    modifyContext: modifyContext ?? (getContexts ? undefined : (context) => {\n      // Reproduce context object with our own `contexts`\n      const propertyDescriptors = Object.getOwnPropertyDescriptors(context);\n      return Object.create(\n        Object.getPrototypeOf(context),\n        {\n          ...propertyDescriptors,\n          options: {\n            ...propertyDescriptors.options,\n            value: [\n              {\n                contexts: cntxts,\n              },\n            ],\n          },\n        },\n      );\n    }),\n    nonGlobalSettings: true,\n  });\n};\n"],"mappings":";;;;;;AAAA;AAA6C;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,yBAAyB,GAAG,CAAC;EACxC,WAAW;EACX,QAAQ,EAAE,MAAM;EAChB,WAAW;EACX,WAAW;EACX,aAAa;EACb,MAAM;EACN;AACF,CAAC,KAAK;EACJ,OAAO,IAAAA,qBAAY,EAAC,CAAC;IACnB,OAAO;IACP,IAAI,EAAE;MACJ;IACF,CAAC;IACD,MAAM;IACN;EACF,CAAC,KAAK;IACJ;IACA,IAAI,QAAQ,GAAG,MAAM;IAErB,IAAI,WAAW,EAAE;MACf,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;MACvC,IAAI,CAAC,QAAQ,EAAE;QACb;MACF;IACF;IAEA,MAAM;MACJ,UAAU;MACV;IACF,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,uBAAyB,QAAQ,EAAG,OAAO,CAAC;;IAElE;IACA;IACA,IAAI,CAAC,YAAY,EAAE;MACjB;IACF;IAEA,MAAM,OAAO,GAAG,wDACd,YAAY,EACX,OAAO,IACR,mCAAmC,IAChC,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;IAExC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,GAAG;MACpC,OAAO;MACP,OAAO,EAAE;IACX,CAAC,GAAG;MACF,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC,EAAE;IACD,eAAe,EAAE,IAAI;IACrB,IAAI,EAAE;MACJ,IAAI,EAAE;QACJ,WAAW,EAAE,WAAW,IAAI,WAAW,IAAI,sDAAsD;QACjG,GAAG,EAAE,GAAG,IAAI;MACd,CAAC;MACD,MAAM,EAAE,MAAM,IAAI,EAAE;MACpB,IAAI,EAAE;IACR,CAAC;IACD,aAAa,EAAE,aAAa,KAAK,WAAW,GAAG,SAAS,GAAI,OAAO,IAAK;MACtE;MACA,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,OAAO,CAAC;MACrE,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAC9B;QACE,GAAG,mBAAmB;QACtB,OAAO,EAAE;UACP,GAAG,mBAAmB,CAAC,OAAO;UAC9B,KAAK,EAAE,CACL;YACE,QAAQ,EAAE;UACZ,CAAC;QAEL;MACF,CACF,CAAC;IACH,CAAC,CAAC;IACF,iBAAiB,EAAE;EACrB,CAAC,CAAC;AACJ,CAAC;AAAC","ignoreList":[]}