{"version":3,"file":"rateLimit.mjs","sources":["../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport utils from '@strapi/utils';\nimport { isString, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = utils.errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n const pluginConfig = strapi.config.get('plugin::email') as any;\n const rateLimitConfig = {\n enabled: true,\n ...(pluginConfig.ratelimit || {}),\n };\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","utils","errors","config","strapi","ctx","next","pluginConfig","get","rateLimitConfig","enabled","ratelimit","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","loadConfig","interval","min","max","prefixKey","handler","middleware"],"mappings":";;;AAKA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAMC,MAAM;AAEvC,gBAAe,CAAA,CAACC,MAAa,EAAA,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAcC,EAAAA,IAAAA,GAAAA;AACnB,QAAA,MAAMC,YAAeH,GAAAA,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,eAAA,CAAA;AACvC,QAAA,MAAMC,eAAkB,GAAA;YACtBC,OAAS,EAAA,IAAA;AACT,YAAA,GAAIH,YAAaI,CAAAA,SAAS,IAAI;AAChC,SAAA;QAEA,IAAIF,eAAAA,CAAgBC,OAAO,KAAK,IAAM,EAAA;;;YAGpC,MAAME,SAAAA,GAAYC,OAAQ,CAAA,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeP,IAAI,oBAAsBH,CAAAA,CAAAA,GAAAA,CAAAA;AAC/C,YAAA,MAAMW,SAAYC,GAAAA,QAAAA,CAASF,YAAgBA,CAAAA,GAAAA,YAAAA,CAAaG,WAAW,EAAK,GAAA,cAAA;AAExE,YAAA,MAAMC,UAAa,GAAA;gBACjBC,QAAU,EAAA;oBAAEC,GAAK,EAAA;AAAE,iBAAA;gBACnBC,GAAK,EAAA,CAAA;gBACLC,SAAW,EAAA,CAAC,EAAEP,SAAAA,CAAU,CAAC;AACzBQ,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAIxB,cAAAA,EAAAA;AACZ,iBAAA;AACA,gBAAA,GAAGS,eAAe;AAClB,gBAAA,GAAGN;AACL,aAAA;AAEA,YAAA,OAAOS,SAAUa,CAAAA,UAAU,CAACN,UAAAA,CAAAA,CAAYd,GAAKC,EAAAA,IAAAA,CAAAA;AAC/C;QAEA,OAAOA,IAAAA,EAAAA;AACT,KAAA;;;;"}