{"_id":"@axiomify/rate-limit","_rev":"13-12a3352ee17a14f81bf6a8b05f4e0900","name":"@axiomify/rate-limit","dist-tags":{"next":"6.0.0-rc.2","latest":"7.1.0"},"versions":{"4.0.0":{"name":"@axiomify/rate-limit","version":"4.0.0","_id":"@axiomify/rate-limit@4.0.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"dist":{"shasum":"629b030211064d03e11007d96218661d730d5016","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-4.0.0.tgz","fileCount":6,"integrity":"sha512-oVD4Xq9OlhH7aN7QsEP2mNunvTXIY1D62LCrq3lHw4BxKjHPuk6GhYtm5zgVYMLzCd2nPr5zer+jv5rZCizILQ==","signatures":[{"sig":"MEYCIQDaVi+NITxYzP7GC0xpBYpz79r2+u95jMSHRDpGnIVeogIhALUpW4ZvEZGiO9rDxHQG35/2rwI3DcfOjbCK8yJ2ST3M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18967},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"4aae91f05c0f845466d7f89b21d131298ff54d2f","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"_npmVersion":"10.9.2","description":"Sliding-window rate limiting with in-memory or Redis backing. Supports per-route enforcement and distributed clustering.","directories":{},"_nodeVersion":"23.6.0","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_4.0.0_1776729199783_0.5020619983372512","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@axiomify/rate-limit","version":"5.0.0","_id":"@axiomify/rate-limit@5.0.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"dist":{"shasum":"e7a671f906ff5c48e308e0c3d4d29bc9541e7a32","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-5.0.0.tgz","fileCount":6,"integrity":"sha512-8dB59roQFisrbR3tbB1bfTnaYl/O+Bi7oN11bS2Ag7nSe/3fjN0F1NlzLE21Fwe7FBfUoLV3avnP7WV5NXFx0Q==","signatures":[{"sig":"MEUCIQCAPP5Lj3bAlNIT5aW8XUEFyPSjR99zr5dHpcGKICRkHAIgDQJsjRkmgNx+kBTHN1bSZXM2NavraQZw6I/4JxZ6JD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25166},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"3bbd9c5be6bf3ef40f74370b2b810bf255f5ac0a","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify. Supports in-memory (dev) and Redis (production).","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_5.0.0_1778232978692_0.7897683045652368","host":"s3://npm-registry-packages-npm-production"}},"6.0.0-rc.2":{"name":"@axiomify/rate-limit","version":"6.0.0-rc.2","_id":"@axiomify/rate-limit@6.0.0-rc.2","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"dist":{"shasum":"0bda422a2e12f96adf42f81c35777be4188c372b","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.0.0-rc.2.tgz","fileCount":6,"integrity":"sha512-02cbfb9AdpoNtrV29to6RplGUDAc5tjTmXiZPDXZuJWdg+IMySrhzvsiFC49I5Yx8cWCqiPw5QlUvgBJGP/lJQ==","signatures":[{"sig":"MEQCIFcQDI8XdRIdbpygViOFLgAiSp1PzpsST07n/3Lg2GPJAiA5g3HQrrHB9CxQKmcefWzQ3iGHuzKI4zCtYB4mM9WFXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28159},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"b2fe2efe0bf3bd6774c5dd32c5059fc57d91246a","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify. Supports in-memory (dev) and Redis (production).","directories":{},"_nodeVersion":"20.19.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.0.0-rc.2_1779031476654_0.41602587414352965","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"@axiomify/rate-limit","version":"6.0.0","author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.0.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"2e068f723adb0a409972eb40d170bf08a48c2684","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.0.0.tgz","fileCount":6,"integrity":"sha512-01Ca4oV6pNxL5Eci1gt0FGsDrvNSJDlRI7gNgfzrm5MhsNxdUXUWEQUDL+UwVscEVetw6n/GZvbUaWC/tuCKVA==","signatures":[{"sig":"MEUCIQDVWsbOVfIK81xlRK5srq5w26Y4r3BENaP5Gj7IFzRz0gIgSKp7Pedm4RGfD4lV6jJSAZgoEwK4ckxfb/TQ907USpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29274},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8c79d9774531748e77a0496d611b27cb9cd16717","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.0.0_1779729034042_0.6827435284841543","host":"s3://npm-registry-packages-npm-production"}},"6.1.0":{"name":"@axiomify/rate-limit","version":"6.1.0","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.1.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"c7d438abdb65913eab41d4cd7d2f2aa7ecf8a958","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.1.0.tgz","fileCount":6,"integrity":"sha512-uJLvUXbTdIEWz1HRGGbeAcsmx2NDJggYlhZ3l4Xs13IL28/8oHTWruqc+msoizJyfsg7uTP3Gsyog03FTgYmnA==","signatures":[{"sig":"MEUCIFiOXB3lQvUV9Y3gE9zuc8biOEbwjz9iECaWWc8O6Vk6AiEA/nwwZbXZKspr9HEZCFiyTwuBaJqvZSGNRnCkyJX5pv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29417},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"d4c979a2857b4f2f2da9fecb4691ffebea17b3b9","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.1.0_1779988445537_0.4548971341901551","host":"s3://npm-registry-packages-npm-production"}},"6.2.0":{"name":"@axiomify/rate-limit","version":"6.2.0","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.2.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"46e80a6cfd95c401dce5285ee91c9fe7b75ea5bd","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.2.0.tgz","fileCount":6,"integrity":"sha512-517+bx9CbuP36Ln6hH2KBR+JRHtdmb00uiwo8DRUY2fDHsSokWaLp7/4aPh6yh+eM2h9a+j2RKp5zbieE0+4Zg==","signatures":[{"sig":"MEYCIQC8lgpBfa3BT3U8R+4s8W0TdVJeF4Q+x4EdeIFtaAUyvAIhAIRacX46PeYr7MQlbIky0mxT+Dwy4pw0bbY/E1LU6mnc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@6.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"1a526aaa1f0a4281cdf8a9649c8ba82fb71a4331","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.2.0_1780239400858_0.7360827444048461","host":"s3://npm-registry-packages-npm-production"}},"6.3.0":{"name":"@axiomify/rate-limit","version":"6.3.0","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.3.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"773e075649fdf03260d8d20683ca6c24a63d792b","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.3.0.tgz","fileCount":6,"integrity":"sha512-bdYsQBSVpP3xolB6ToSZFS5PX7S6dvdt+KWghBaUVsCd8LuvaVg+z6rg+ax4YmN+kK5mNgLWE4d7Xe8P0rqI2A==","signatures":[{"sig":"MEQCIGtHE5ySDoM5PuIM5m4UR4OYJajCA7rOaJs2DzyY5OysAiALhn8vJsuUNe6p4oYlHNjWr/ZJ5Xr+HY3NjbdcQgEc7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@6.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"e0d74c62efac09217319c3c3daf799f07504a3b5","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.3.0_1780874333915_0.7424776842412211","host":"s3://npm-registry-packages-npm-production"}},"6.3.1":{"name":"@axiomify/rate-limit","version":"6.3.1","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.3.1","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"eb19aeb6b409cf7e247026b346d49bd2ecb169e8","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.3.1.tgz","fileCount":6,"integrity":"sha512-BEkMrHw71sF2vyEidu2BFkPgyEtU5DkjkQE+tSHo+4hfD0Ivr/9xPZ8N2xspTTGgKVHz/6DrOtbu9ShxTX4FyA==","signatures":[{"sig":"MEYCIQC0089pd94dNFhOFRbk83NEKnSkwwHWXr9QjWnkTGZXWwIhAJhUns3+FzIm4tq+Rgliz69AlPr38rQ7i9AUGJ2zqMTo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@6.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"47fdfec5814dc151a4c897ffbd08f8b6da77c6cf","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.3.1_1781087006173_0.13767089259920584","host":"s3://npm-registry-packages-npm-production"}},"6.3.2":{"name":"@axiomify/rate-limit","version":"6.3.2","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.3.2","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"0ee78538d29922dc266f8dbdcfe140584e1975da","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.3.2.tgz","fileCount":6,"integrity":"sha512-w0jUKycGrOwwD4yD3GrNtuyoviIDsjM9y889DbDMEHW4Doeq167E4fqbF16WS5g0l5B3UR4dh7/p9gH8jeo/Iw==","signatures":[{"sig":"MEUCIEYg+N/+6K9s85zYxzzWo48mRMj9nGPv6iEiOxabGJkrAiEAlDpK+avc8+LYYxcjlJMxcRyCeV6nEPe1oGughFSktjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@6.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"31537d5f1ae10e501f93ab2de7b44d58fca8339a","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.3.2_1781094443449_0.3146332103630092","host":"s3://npm-registry-packages-npm-production"}},"6.3.3":{"name":"@axiomify/rate-limit","version":"6.3.3","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@6.3.3","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"e096ba921bce24b50bb70356343c4a57f3b07728","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-6.3.3.tgz","fileCount":6,"integrity":"sha512-1SFZlQdAT4nRqLlneGYecAkpPBOuagralttPsyaFki+8+zskFrPZ62onTSW9EbEbzGWVvtYytrSkvorOpXKYZw==","signatures":[{"sig":"MEUCIHo60UIF7aEWUwO+gIIJBdUAaKd4jsQENhd59Wbr6oqXAiEA8D9MYC7BOHIgE/l48aqlWAOtVoPSEBrsuG8xzeO5GFA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"8c8172eaacdeb225342992693b806ab443b60d2b","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.9.8","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_6.3.3_1781781715671_0.8793572604161959","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"@axiomify/rate-limit","version":"7.0.0","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@7.0.0","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"28827a5f6a3d55c40c537c91f8dfc1ad86bf6eef","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-7.0.0.tgz","fileCount":6,"integrity":"sha512-0beS4Q2rPDENKEl1SYLl6YKb+CLymkVtj15cJ/ZiWKrgTKMio+XCPrMMdB6KnUc/mgysREtydXv5SQhHmG6x7A==","signatures":[{"sig":"MEUCIHJeDFvVjWfJGJnKuZs+flUwoW13ayr/tP7AmpK4OAgwAiEAhYMb5KAvKW+Mj/I8CSY8ar8f8STyrQw4eq7mmKtx/kE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@7.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"fbf6e60487a5232ad20e80cfd584db8cb33e96b4","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_7.0.0_1782944894420_0.4346383758079442","host":"s3://npm-registry-packages-npm-production"}},"7.0.1":{"name":"@axiomify/rate-limit","version":"7.0.1","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"url":"https://github.com/OTopman","name":"Topman","email":"okunlolatopman14@gmail.com"},"license":"MIT","_id":"@axiomify/rate-limit@7.0.1","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"dist":{"shasum":"78cfce1b9a95045e2251bd24b9bc7800b85528a2","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-7.0.1.tgz","fileCount":6,"integrity":"sha512-daHJVs/jB5KA8qT1wqtk0oFeFPdrC5vPp84V4rBYqL/i8DRe8aUKazyxTlj4qyzGBVNOO+Rh3T4LKoDNo+XALQ==","signatures":[{"sig":"MEYCIQCg/K6xTNrFpIb9Q0fottrRd8ZDB1qnHaUwo53NvmuSxgIhAMIkr+/iwhP7/82ojXYNGnsZqRRdMirYr7MvVUapciet","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@7.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":30307},"main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"86ca53ddf22675696310ae2706003c6cecd017bd","scripts":{"build":"tsup"},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"repository":{"url":"git+https://github.com/OTopman/axiomify.git","type":"git","directory":"packages/rate-limit"},"_npmVersion":"10.8.2","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@axiomify/core":"*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/rate-limit_7.0.1_1785366600725_0.2582686260864808","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@axiomify/rate-limit","version":"7.1.0","description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","main":"dist/index.js","types":"dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"scripts":{"build":"tsup","test":"vitest run tests --config ../../vitest.config.mts"},"dependencies":{"@axiomify/core":"^7.1.0"},"keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"author":{"name":"Topman","email":"okunlolatopman14@gmail.com","url":"https://github.com/OTopman"},"license":"MIT","homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","repository":{"type":"git","url":"git+https://github.com/OTopman/axiomify.git","directory":"packages/rate-limit"},"bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=20.0.0"},"_id":"@axiomify/rate-limit@7.1.0","gitHead":"c286687588228a3ade79dbe9eae74915a3d5d794","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-IWg38JHPNqUFbIK5knz8iNC7BkCgIxiuBWMFbBmsddjRStPKHvYnkFj5OcB8IAWycBTEbzdDEC39vtXdj7DPCg==","shasum":"cba1b3a82279d4a72415ea112947f196c702ae94","tarball":"https://registry.npmjs.org/@axiomify/rate-limit/-/rate-limit-7.1.0.tgz","fileCount":6,"unpackedSize":30377,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@axiomify%2frate-limit@7.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCPhUJThC3GatWXJMGsZE8jukL5mIiwSrdPWUYxcJQv5QIhAOOCEX/hm+Sh0UWYgwmAgc1/GMiZ6GXIT1VBTZX5G4js"}]},"_npmUser":{"name":"topman","email":"okunlolatopman14@gmail.com"},"directories":{},"maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rate-limit_7.1.0_1786729732702_0.7581543358438374"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T23:53:19.688Z","modified":"2026-08-14T17:48:53.264Z","4.0.0":"2026-04-20T23:53:19.929Z","5.0.0":"2026-05-08T09:36:18.826Z","6.0.0-rc.2":"2026-05-17T15:24:36.868Z","6.0.0":"2026-05-25T17:10:34.178Z","6.1.0":"2026-05-28T17:14:05.681Z","6.2.0":"2026-05-31T14:56:41.004Z","6.3.0":"2026-06-07T23:18:54.059Z","6.3.1":"2026-06-10T10:23:26.324Z","6.3.2":"2026-06-10T12:27:23.587Z","6.3.3":"2026-06-18T11:21:55.806Z","7.0.0":"2026-07-01T22:28:14.560Z","7.0.1":"2026-07-29T23:10:00.862Z","7.1.0":"2026-08-14T17:48:52.839Z"},"bugs":{"url":"https://github.com/OTopman/axiomify/issues"},"author":{"name":"Topman","email":"okunlolatopman14@gmail.com","url":"https://github.com/OTopman"},"license":"MIT","homepage":"https://github.com/OTopman/axiomify/blob/main/docs/packages/rate-limit.md","keywords":["axiomify","rate-limit","rate-limiter","sliding-window","redis","middleware","security"],"repository":{"type":"git","url":"git+https://github.com/OTopman/axiomify.git","directory":"packages/rate-limit"},"description":"Sliding-window rate limiting for Axiomify — Redis EVALSHA caching, full ioredis/redis@4 compatibility, MemoryStore for development.","maintainers":[{"name":"topman","email":"okunlolatopman14@gmail.com"}],"readme":"# @axiomify/rate-limit\n\n[![npm version](https://img.shields.io/npm/v/@axiomify/rate-limit.svg)](https://npmjs.com/package/@axiomify/rate-limit)\n[![codecov](https://codecov.io/github/otopman/axiomify/graph/badge.svg)](https://codecov.io/github/otopman/axiomify)\n[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/OTopman/axiomify/badge)](https://securityscorecards.dev/viewer/?uri=github.com/OTopman/axiomify)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nSliding-window rate limiting for Axiomify. Supports in-memory (dev) and Redis (production).\n\n## Install\n\n```bash\nnpm install @axiomify/rate-limit\n```\n\nFor Redis support, install your preferred client:\n\n```bash\nnpm install ioredis   # or: npm install redis\n```\n\n## Quick start — global rate limit\n\n```typescript\nimport { useRateLimit } from '@axiomify/rate-limit';\nimport { RedisStore } from '@axiomify/rate-limit';\nimport Redis from 'ioredis';\n\nconst redis = new Redis(process.env.REDIS_URL);\nconst store = new RedisStore(redis);\n\nuseRateLimit(app, {\n  windowMs: 60_000, // 1-minute sliding window\n  max: 100, // 100 requests per IP per window\n  store,\n});\n```\n\n## Per-route rate limiting\n\n```typescript\nimport { createRateLimitPlugin } from '@axiomify/rate-limit';\n\nconst loginRateLimit = createRateLimitPlugin({\n  windowMs: 15 * 60_000, // 15 minutes\n  max: 5,\n  store,\n  keyGenerator: (req) => req.body?.email ?? req.ip, // key by email, not IP\n});\n\napp.route({\n  method: 'POST',\n  path: '/auth/login',\n  plugins: [loginRateLimit],\n  handler: async (req, res) => {\n    /* ... */\n  },\n});\n```\n\n## Options\n\n| Option                         | Default         | Description                                                             |\n| ------------------------------ | --------------- | ----------------------------------------------------------------------- |\n| `windowMs`                     | `60000` (1 min) | Sliding window duration in milliseconds.                                |\n| `max`                          | `100`           | Maximum requests allowed per key per window.                            |\n| `store`                        | auto            | `RateLimitStore` to use. Defaults to `MemoryStore` (dev only).          |\n| `keyGenerator`                 | `req.ip`        | Function to derive the rate-limit key per request.                      |\n| `skip`                         | —               | Return `true` to skip rate limiting for a request (e.g., internal IPs). |\n| `allowMemoryStoreInProduction` | `false`         | Must be `true` to use `MemoryStore` in `NODE_ENV=production`.           |\n| `memoryStoreMaxKeys`           | `50000`         | Maximum unique keys in `MemoryStore` before pruning.                    |\n\n## RedisStore — EVALSHA caching\n\n`RedisStore` uses a Lua sliding-window script. On the first call, it sends the full\nscript via `EVAL`. Subsequent calls use `EVALSHA` (the script's SHA1 hash) — Redis\nonly receives a 40-byte hash instead of the full Lua source. Falls back to `EVAL`\nautomatically on `NOSCRIPT` errors (e.g., after a Redis restart).\n\n### ioredis\n\n```typescript\nimport Redis from 'ioredis';\nimport { RedisStore } from '@axiomify/rate-limit';\n\nconst redis = new Redis(process.env.REDIS_URL);\nconst store = new RedisStore(redis);\n```\n\n### redis@4\n\n```typescript\nimport { createClient } from 'redis';\nimport { RedisStore } from '@axiomify/rate-limit';\n\nconst redis = createClient({ url: process.env.REDIS_URL });\nawait redis.connect();\nconst store = new RedisStore(redis as any);\n```\n\n## Response headers\n\nEvery rate-limited response includes:\n\n| Header                  | Value                                    |\n| ----------------------- | ---------------------------------------- |\n| `X-RateLimit-Limit`     | Maximum requests allowed per window      |\n| `X-RateLimit-Remaining` | Requests remaining in the current window |\n| `X-RateLimit-Reset`     | Unix timestamp when the window resets    |\n| `Retry-After`           | Seconds to wait (only on 429 responses)  |\n\n## MemoryStore\n\nFor development and testing only. **Not safe for production multi-process deployments** — each\nworker process has its own counter. Effective rate limit becomes `max × numberOfWorkers`.\n\n```typescript\nimport { MemoryStore } from '@axiomify/rate-limit';\nconst store = new MemoryStore({ maxKeys: 100_000 });\n```\n\nCall `store.close()` during graceful shutdown to clear the prune interval.\n","readmeFilename":"README.md"}