UNPKG

diesel-core

Version:

Web framework built on Web Standards

2 lines (1 loc) 488 B
var E=new Map,K=(J)=>{let{windowMs:F=60000,max:G=100,message:H="Rate limit exceeded. Please try again later.",store:A}=J;return async(B)=>{let z=B.ip;if(A){let b=`rate-limit:${z}`,j=await A.get(b);if(j=j?j+1:1,j>G)return B.json({error:H},429);await A.set(b,j.toString(),F);return}let C=Date.now();if(!E.has(z))E.set(z,{count:1,startTime:C});else{let b=E.get(z);if(C-b.startTime>F)b.count=1,b.startTime=C;else b.count++;if(b.count>G)return B.json({error:H},429)}}};export{K as rateLimit};