{"version":3,"file":"buildForbidRuleDefinition.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","e","__esModule","default","buildForbidRuleDefinition","contextName","contexts","cntxts","description","getContexts","modifyContext","schema","url","iterateJsdoc","context","info","comment","report","utils","contextStr","foundContext","findContext","message","contextSelected","meta","docs","type","undefined","propertyDescriptors","Object","getOwnPropertyDescriptors","create","getPrototypeOf","options","value","nonGlobalSettings","exports"],"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,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAGA,CAAC;EACxCC,WAAW;EACXC,QAAQ,EAAEC,MAAM;EAChBC,WAAW;EACXC,WAAW;EACXC,aAAa;EACbC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,OAAO,IAAAC,qBAAY,EAAC,CAAC;IACnBC,OAAO;IACPC,IAAI,EAAE;MACJC;IACF,CAAC;IACDC,MAAM;IACNC;EACF,CAAC,KAAK;IACJ;IACA,IAAIZ,QAAQ,GAAGC,MAAM;IAErB,IAAIE,WAAW,EAAE;MACfH,QAAQ,GAAGG,WAAW,CAACK,OAAO,EAAEG,MAAM,CAAC;MACvC,IAAI,CAACX,QAAQ,EAAE;QACb;MACF;IACF;IAEA,MAAM;MACJa,UAAU;MACVC;IACF,CAAC,GAAGF,KAAK,CAACG,WAAW,CAAC,uBAAyBf,QAAQ,EAAGU,OAAO,CAAC;;IAElE;IACA;IACA,IAAI,CAACI,YAAY,EAAE;MACjB;IACF;IAEA,MAAME,OAAO,GAAG,wDACdF,YAAY,EACXE,OAAO,IACR,mCAAmC,IAChCN,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;IAExCC,MAAM,CAACK,OAAO,EAAE,IAAI,EAAE,IAAI,EAAEN,OAAO,GAAG;MACpCA,OAAO;MACPF,OAAO,EAAEK;IACX,CAAC,GAAG;MACFL,OAAO,EAAEK;IACX,CAAC,CAAC;EACJ,CAAC,EAAE;IACDI,eAAe,EAAE,IAAI;IACrBC,IAAI,EAAE;MACJC,IAAI,EAAE;QACJjB,WAAW,EAAEA,WAAW,IAAIH,WAAW,IAAI,sDAAsD;QACjGO,GAAG,EAAEA,GAAG,IAAI;MACd,CAAC;MACDD,MAAM,EAAEA,MAAM,IAAI,EAAE;MACpBe,IAAI,EAAE;IACR,CAAC;IACDhB,aAAa,EAAEA,aAAa,KAAKD,WAAW,GAAGkB,SAAS,GAAIb,OAAO,IAAK;MACtE;MACA,MAAMc,mBAAmB,GAAGC,MAAM,CAACC,yBAAyB,CAAChB,OAAO,CAAC;MACrE,OAAOe,MAAM,CAACE,MAAM,CAClBF,MAAM,CAACG,cAAc,CAAClB,OAAO,CAAC,EAC9B;QACE,GAAGc,mBAAmB;QACtBK,OAAO,EAAE;UACP,GAAGL,mBAAmB,CAACK,OAAO;UAC9BC,KAAK,EAAE,CACL;YACE5B,QAAQ,EAAEC;UACZ,CAAC;QAEL;MACF,CACF,CAAC;IACH,CAAC,CAAC;IACF4B,iBAAiB,EAAE;EACrB,CAAC,CAAC;AACJ,CAAC;AAACC,OAAA,CAAAhC,yBAAA,GAAAA,yBAAA","ignoreList":[]}