{"version":3,"sources":["jsdelivr-header.js","/npm/eslint-plugin-inclusive-terminology@1.0.2/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,UAAY,QAAQ,aACpB,GAAK,QAAQ,MACb,KAAO,QAAQ,QAEf,YAAc,QAAQ,gBAEtB,iBAAmB,KAAK,KAAK,QAAQ,MAAM,qCAE3C,YAAc,GAAG,WAAW,mBAAqB,KAAK,MAAM,GAAG,aAAa,mBAI5E,iBAAmB,GAAQ,IAAI,KAAQ,UAAU,MACjD,uBAAyB,GAAQ,GAAG,EAAK,MAAM,EAAE,GAAG,gBAAgB,EAAK,MAAM,KAE/E,aAAe,GAAQ,IAAI,OAAO,UAAU,iBAAiB,uBAAuB,cAAiB,iBAAiB,aAAgB,iBAAiB,EAAK,oBAAoB,iBAAiB,uBAAuB,SAAY,iBAAiB,uBAAuB,kBAAqB,iBAAiB,uBAAuB,gBAAmB,iBAAiB,EAAK,iCAAiC,iBAAiB,aAAgB,iBAAiB,QAAW,iBAAiB,EAAK,mBAAmB,iBAAiB,YAAe,iBAAiB,EAAK,wBAAyB,KAE9kB,SAAS,iBAAiB,GACxB,OAAO,OAAO,KAAK,GAAO,QAAO,CAAC,EAAI,KACpC,EAAI,yBAAyB,GAAY,EAClC,IACP,CAAC,EACL,CAEA,SAAS,oBAAoB,EAAa,EAAO,GAC/C,MAAM,YAAE,GAAgB,EAClB,EAAQ,EACV,IAAI,OAAO,EAAa,KACxB,aAAa,GACjB,OAAO,OAAO,GAAO,MAAM,EAC7B,CAEA,SAAS,YAAY,EAAS,EAAM,EAAa,GAC/C,EAAQ,OAAO,CACb,OACA,QAAS,oBAAoB,kBAA4B,KAE7D,CAEA,SAAS,oBACP,OAAQ,aAAe,aAAa,QAAO,CAAC,EAAU,KACpD,MAAM,EAAe,CACnB,KAAM,CACJ,KAAM,aACN,KAAM,CACJ,YAAa,yBAAyB,EAAK,cAC3C,SAAU,YACV,cAAe,EAAK,YACpB,IAAK,EAAK,IACV,WAAY,EAAK,aAGrB,OAAS,IAAY,CACnB,WAAa,IACiB,oBAAoB,EAAK,YAAa,EAAK,KAAM,CAAE,YAAa,EAAK,eAE/F,YAAY,EAAS,EAAM,EAAK,YAAa,EAAK,WACpD,EAEF,QAAU,IACoB,oBAAoB,EAAK,YAAa,EAAK,MAAO,CAAE,YAAa,EAAK,eAEhG,YAAY,EAAS,EAAM,EAAK,YAAa,EAAK,WACpD,EAEF,QAAU,IACR,EAAK,SAAS,SAAS,IACO,oBAAoB,EAAK,YAAa,EAAQ,MAAO,CAAE,YAAa,EAAK,eAEnG,YAAY,EAAS,EAAM,EAAK,YAAa,EAAK,WACpD,GACA,KAKR,OADA,EAAS,SAAS,EAAK,aAAe,EAC/B,CAAQ,GACd,CAAC,EACN,CAEA,MAAM,SAAW,oBAEjB,OAAO,QAAU,CACf,MAAO,SACP,QAAS,CACP,IAAK,CACH,MAAO,iBAAiB","file":"/npm/eslint-plugin-inclusive-terminology@1.0.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/eslint-plugin-inclusive-terminology@1.0.2/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const pluralize = require('pluralize');\nconst fs = require('fs');\nconst path = require('path');\n\nconst rulesConfig = require('./rules.json');\n\nconst customConfigPath = path.join(process.cwd(),'.inclusive-terminology-rules.json');\n\nconst customRules = fs.existsSync(customConfigPath) && JSON.parse(fs.readFileSync(customConfigPath));\n\n\n\nconst pluralOrSingular = term => `(${term}|${pluralize(term)})`;\nconst firstLetterCapitalized = term => `${term.slice(0,1).toUpperCase()}${term.slice(1)}`\n\nconst defaultRegex = term => new RegExp(`([^A-Z]${pluralOrSingular(firstLetterCapitalized(term))}$|[^a-z]${pluralOrSingular(term)}$|[^A-Z]${pluralOrSingular(term.toUpperCase())}$|^${pluralOrSingular(firstLetterCapitalized(term))}$|^${pluralOrSingular(firstLetterCapitalized(term))}[^a-z]|[a-z]${pluralOrSingular(firstLetterCapitalized(term))}|[^a-zA-Z]${pluralOrSingular(term.toUpperCase())}[^a-z]|[^a-zA-Z]${pluralOrSingular(term)}[^a-z]|^${pluralOrSingular(term)}$|^${pluralOrSingular(term.toUpperCase())}$|${pluralOrSingular(term)}[^a-z]|${pluralOrSingular(term.toUpperCase())}[^A-Z])`, 'g');\n\nfunction setRulesAsErrors(rules) {\n  return Object.keys(rules).reduce((acc,ruleName) => {\n    acc['inclusive-terminology/'+ruleName] = 2;\n    return acc;\n  },{});\n}\n\nfunction checkForAvoidedTerm(avoidedTerm, value, options) {\n  const { customRegex } = options;\n  const regex = customRegex\n    ? new RegExp(customRegex, 'g')\n    : defaultRegex(avoidedTerm);\n  return String(value).match(regex);\n}\n\nfunction reportIssue(context, node, avoidedTerm, suggestedTerm) {\n  context.report({\n    node,\n    message: `Avoid using term ${avoidedTerm}, instead try ${suggestedTerm}`\n  });\n}\n\nfunction createEslintRules(){\n  return (customRules || rulesConfig).reduce((allRules, rule) => {\n    const compiledRule = {\n      meta: {\n        type: 'suggestion',\n        docs: {\n          description: `Avoid the use of term ${rule.avoidedTerm}`,\n          category: 'stylistic',\n          recommended: !!rule.recommended,\n          url: rule.url,\n          suggestion: rule.suggestion\n        }\n      },\n      create: (context) => ({\n        Identifier: (node) => {\n          const containsAvoidedTerm = checkForAvoidedTerm(rule.avoidedTerm, node.name, { customRegex: rule.customRegex });\n          if(containsAvoidedTerm) {\n            reportIssue(context, node, rule.avoidedTerm, rule.suggestion);\n          }\n        },\n        Literal: (node) => {\n          const containsAvoidedTerm = checkForAvoidedTerm(rule.avoidedTerm, node.value, { customRegex: rule.customRegex });\n          if(containsAvoidedTerm) {\n            reportIssue(context, node, rule.avoidedTerm, rule.suggestion);\n          }\n        },\n        Program: (node) => {\n          node.comments.forEach((comment) => {\n            const containsAvoidedTerm = checkForAvoidedTerm(rule.avoidedTerm, comment.value, { customRegex: rule.customRegex });\n            if(containsAvoidedTerm) {\n              reportIssue(context, node, rule.avoidedTerm, rule.suggestion);\n            }\n          });\n        }\n      })\n    };\n    allRules['avoid-'+rule.avoidedTerm] = compiledRule;\n    return allRules;\n  }, {});\n}\n\nconst allRules = createEslintRules();\n\nmodule.exports = {\n  rules: allRules,\n  configs: {\n    all: {\n      rules: setRulesAsErrors(allRules)\n    }\n  }\n}\n"]}