{"_id":"@async-kit/ratelimitx","_rev":"26-f5df9cd2e530df95dda9e5f04c733b57","name":"@async-kit/ratelimitx","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.2":{"name":"@async-kit/ratelimitx","version":"0.1.2","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.2","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"586ee2dd8c75f9acb9f80ce88dcaff69dfc0254b","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.2.tgz","fileCount":9,"integrity":"sha512-BrbsxFbs8I9wL2NsIKnQetbMOcvFs+vQ0m2fZhU5XXswbOYH38K6vLfxHOZ4Qk9/XvDQriwPv7ZAVPe9ohJ9tQ==","signatures":[{"sig":"MEYCIQCN3XsnLNNysNxJwjTtZl62wGzU0OGp+S05Ou6LfNY9FAIhAJ7P20U6vc3WI+p1khPqeRo1XGlBOidlFCB52gi32bGh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84026},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"fc8f349329e4699165fe044d14e9a1d97bb18bdd","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.2_1773237309082_0.7102475283266074","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@async-kit/ratelimitx","version":"0.1.3","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.3","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"d7b866083c20a8270020a62e63e2a18552ead0ab","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.3.tgz","fileCount":9,"integrity":"sha512-HLXTo5/VhIIUdPMO8CjqAYUfuRjyk48s/bsumPAxKCoW0wRLXjx5I1D1IsLmNyHCdT24UBizOvs6I3MWb4Nqyg==","signatures":[{"sig":"MEQCIQDdLFQC8AHgGB18Byg7WXra/FuRcd1z9zbL6S2ityvtbwIfTdFEj4DUPNM+3NnmW5TLG62xZarf2gusQ70E8G/sKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84028},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"667a3a8e072669fe6a9bca31ba74c9e8c39d3321","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.3_1773239023614_0.7237989516670391","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@async-kit/ratelimitx","version":"0.1.4","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.4","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"505e1acc2aecaa62a7ba40d128cd80e54940c1ca","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.4.tgz","fileCount":9,"integrity":"sha512-h9fOlitX0W8sIUFrtRzx/6ihsC46PURwKWsdPQK3MfrZpHDbmG4FJEitvlOHi4LUVwJO1LfQcXJvICyIsxyxRQ==","signatures":[{"sig":"MEUCIAOKE6hKANR7g1tIA2RSbkbnr2pqy20/UHQ6+WHNYKnTAiEA4ulpuHYm43vdzRD1Xaa1EmVcAbpmAu87EmuJo4AleT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84030},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"2dce00ae5f3d689c3b068de51a06d7c798e9a2b8","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.4_1773239177155_0.7423946192632465","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@async-kit/ratelimitx","version":"0.1.5","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.5","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"c9348194c0c355633c95574eba9cbef6ac24f574","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.5.tgz","fileCount":9,"integrity":"sha512-0PJnK4XV1MdO4rOiRKg5WPNHDX+eRT+oTRFXT1jtA9uSm0QGaM6W+5Pjg0irvDYT9DOy8mNpb/jsCNXCQ9iA0Q==","signatures":[{"sig":"MEQCIHBGvTrYDHdyfSTxdeuJfmY+lEd3E1fNXZ2qHlll8eJyAiBRVDC1Zm2xSGM1ej/OKCGzpOd0aSJCQuLwkS5LT/XCkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84032},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"ce5e2983045b48954085663ff365f37df3129cee","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.5_1773239346636_0.1617878260206025","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@async-kit/ratelimitx","version":"0.1.6","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.6","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"3d16bb06af1b9befef876a409409819f095b8c7c","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.6.tgz","fileCount":9,"integrity":"sha512-D+Cv/qG/29ZbB0fBen5fyh4Pui3c7Zzns2kso9/sPPiB6DYjiy/xXn5vLayXk7vVtQnFZpqVeKEFxXXQvij1dA==","signatures":[{"sig":"MEUCIBAHsCeXa9IrJll9RNrP9PaI8ij3cbt1/CSAHuMPC11bAiEA1nMTIevnLf5Dj7d2JsltqFSGuoe0gVLczFq8tKAXFIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84034},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"d6314532d7cae237ba178c6276be3544d803541d","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.6_1773239494087_0.9354600661607178","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@async-kit/ratelimitx","version":"0.1.7","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.7","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"6f606925b8bea94157211aece0bdee409ada3bcb","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.7.tgz","fileCount":9,"integrity":"sha512-m8oUgQDX58MDiSYM8olUpjWqtGt6HD6+lSVhbz2cf3jjjL6h7HWhtDAXbo0rtTXC99+3SnEci/Pew258nFtKBg==","signatures":[{"sig":"MEYCIQD7YQp3P8DhywXILSDGJvnzQtepY9HHbiizevJERRejyAIhAMj0LPNQZXsIzbWWfRtWRfw4zpgZN401rlBJluFJz/v1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84036},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a8374c8f1a62b1692317a552bcf48da1bc8140e3","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.7_1773239643304_0.023105211114933466","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@async-kit/ratelimitx","version":"0.1.8","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.8","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"39aa817e2650e1f814d173666becb14531c35ac7","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.8.tgz","fileCount":9,"integrity":"sha512-tC1hh9sOk+sIbhEUoFAnkbE335n4g8DdsK5b1ecdnsw3GnxJV5rAb9zpyNlJueQsBe8n/g7x+IjNpeskgC71vg==","signatures":[{"sig":"MEUCIGdKatT9usnfQCwSTs+l0dgXEMnNLQKbZqNM+EtWZzVRAiEA77jRXpjM3qAg+AfjvH1zd99dYT6gt+Ok2nMBAdxo4I0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84038},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"4b0245acf1437f236194788fe5b6f447dbca1887","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.8_1773239800200_0.554192122585031","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@async-kit/ratelimitx","version":"0.1.9","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.9","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"5b63c9587a2df97cd8e6851c10bed8470dfa875b","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.9.tgz","fileCount":9,"integrity":"sha512-men57EsOKPRIT2BMA8Qu0q0uNtGo6NAUbAhwVIRBKRpZKn48CT9ES5jLJdJNvksGgykukXhwsctyuKxbky2faQ==","signatures":[{"sig":"MEQCIHM6N3ZiL3AS2/bdQL2VB4MTD1rVC2RCH55H2Sx2mZIJAiBhls/pZgkWIygb+XwN4XyvKrS/am2rHICdn6Fns9Y9rA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84040},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"17454423d93d3093cf1172f5f5a39e828fd2cb1f","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.9_1773239943940_0.48702604337863376","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@async-kit/ratelimitx","version":"0.1.10","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.10","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"8d82f68ac74d44aa749b341eacf4859598718e48","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.10.tgz","fileCount":9,"integrity":"sha512-XAa/d67Z03ahihc4eQQVeBkY1T1Yuo+JBROD32kdpX6oo1wuJEA6GDWyJH4JwoXVlchPqOhw83CPYmKKQac0GQ==","signatures":[{"sig":"MEYCIQDiuPSLwcoGwMNKvV6+7a36+ZVbvIiXllpTyq2thO7gnwIhAMQ/JaHVYpWKfcDOgI1/BlklbqhYego1PE8agqJioEph","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84043},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"8e4a60eed5cb50ef0849bc362d4841df7cee26ba","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.10_1773240086163_0.29145233771088375","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@async-kit/ratelimitx","version":"0.1.11","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.11","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"be28cfacf89cde8ac762c50d1730c6a73bc23f3e","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.11.tgz","fileCount":9,"integrity":"sha512-5hvuby60ezQsFOL96X2CTZjM7aIVqwM9fJdL+p1phGNfLV7ANvI/s8S7m541tzLh2cGL/pTKMUADXzAonGM5Qg==","signatures":[{"sig":"MEUCICRflzBgI61bA4dpMMOH7fFGFxEQxMRsTzKGqvRovNEwAiEAklmO7FEaN6A91pd9HfFZQu6xyhtadbikqiNSqmxr5fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84045},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"b74aa55a4b0452209574cc6c41f32110378c1b6b","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.11_1773240237127_0.16520726120103824","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@async-kit/ratelimitx","version":"0.1.12","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.12","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"39c7a7946e48673c3f2846167d25f2072db0e985","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.12.tgz","fileCount":9,"integrity":"sha512-onXjWbwvMUqlWyW0STElk1xt+IyenD7xMa0lonpCuirJh8EIZc4RJFAKxZH46g9lYyU+RNO3acaosMkXykHUZg==","signatures":[{"sig":"MEUCIFeL3XJvXygIrFrYFIjnocD1Iam6O018lNcC4NjMwkfNAiEAt0or1dj6NC/se2xvX6qzbvVlv+vl89KNHGILcwBFqo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84047},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c4e192df408c8bae62bbb3539d53073917ecc850","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.12_1773240387424_0.6396566537389525","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@async-kit/ratelimitx","version":"0.1.13","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.13","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"b589adce2498ded9e145ca248c07fb671880da95","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.13.tgz","fileCount":9,"integrity":"sha512-hIrKi60hLiYJ5GtiJ6/CWYne7b2VwclvmesTu3jV0e2ghjhYAOjpNRbBDudXbJ8kLBNOQsPpWuA621+9HipVLQ==","signatures":[{"sig":"MEYCIQCYDW4ZqlnC2TzFhDLKP36rnNFVVEimWWHBye6tkIMMxAIhAINYwUdVfh9t3aFXKWvd2C0QgQE5IsUzFpcl5Ke9D8hY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84049},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"7055b065be984a83a8a2896a93b34d9a532497d5","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.13_1773240539421_0.9677572348420269","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@async-kit/ratelimitx","version":"0.1.14","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.14","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"075b43f27d75c4a47056b9e5e6f178d66d028426","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.14.tgz","fileCount":9,"integrity":"sha512-Jxl4sTVtDd3IYTo9BdJiwVjxVVKDAuWV52BXFX3NdI3HgaHVGfPjkTHqK5jQzMhc1MSNCCcwwDKdTbfQrMnnyw==","signatures":[{"sig":"MEYCIQD2scQ7NYnG92jH216ghc/IunkTf2eIwYsEmet/v13hMgIhAKUxy+a7fVgoePj7grUSVIivGZgS1T8Fh9Qw9ZL6PkX5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84051},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"e8984401025d022ab9d368ac2f98903940557758","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.14_1773240691062_0.17824320974228125","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@async-kit/ratelimitx","version":"0.1.15","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.15","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"c7128a093704765eafcc69e1e6db4a52bc908e78","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.15.tgz","fileCount":9,"integrity":"sha512-9Lv+LQLbnnh4aP7cksIVAUCLyVlqKK6J0Sc3NItzmaP6G/XVop00lJh8SLNxMf3coV9rKHyrx5qjmH1KdwOlpw==","signatures":[{"sig":"MEUCIQCiT5kjMPtUC39YenMcQ2tYaTv4NQH24uVfkF24ZieU2QIgRECes5jn8hMgfSta/HSX+jBnJKHhaa/+/QV0bR6cF7w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84053},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"2c10fb2220deeafccded890f646fcd3c5ca20e67","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.15_1773240844054_0.9233046172902815","host":"s3://npm-registry-packages-npm-production"}},"0.1.16":{"name":"@async-kit/ratelimitx","version":"0.1.16","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.16","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"c98427b4376bd93ceac79f4724bfd54711fa6a24","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.16.tgz","fileCount":9,"integrity":"sha512-oOn+7l5NnFnzfM5ntazfDFGanCtSD9cDirulS4ZUllE2mgX4AvpD2SpgqW+nIuzC5sNC/RnG1s9N6VMqt+4Jhw==","signatures":[{"sig":"MEQCIFPKkmb3+AtoVJ1lKGWBdSKTsqsL89RzDDwbUx5iMG1JAiAHJQ2gRJ3TdPnp9nGx8f+ANtm2BLtqngYLIv9shw61QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84055},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c85b90ae722a5d73360cd05394cb5e5e90ab5def","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.16_1773240990095_0.1285171800115863","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@async-kit/ratelimitx","version":"0.1.17","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.17","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"51d13254e397c28641805f99ffeef6be698a691f","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.17.tgz","fileCount":9,"integrity":"sha512-CqQVsR1KHP4MXG3U3DzeAnTaTDhPCwVuQKsOB19A9UuE1HXWnc9S4jLnJUixgyAeeohxl+F06CN2Z6rBvTb92A==","signatures":[{"sig":"MEQCIHEHeG5Dd9UtoRcKugwzJxJ+dfkrsSmlAF0sSsuq9029AiAHI05iol/JyiBL62CEedspilGB6SrprtoVM39g8psDYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84057},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"37de5beb02e9bbbbe4f719ebddf33b62cf379a8c","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.17_1773241134167_0.7240204859317139","host":"s3://npm-registry-packages-npm-production"}},"0.1.18":{"name":"@async-kit/ratelimitx","version":"0.1.18","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.18","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"3c1db30d537f18ea96282cf66620528241cea472","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.18.tgz","fileCount":9,"integrity":"sha512-GHd1QyAfXsCtPDbHMP2W/eZrcF9WzuIDMCH1oblKiUloqMVIkSFzyvbRcme0Vfpj8jHWlvqrH33/CiXfu9MXOA==","signatures":[{"sig":"MEQCIHi5YZzFY6ShaCvOslrXlks/9bKHwXhME4er4pFkZlTxAiA7NjmSf9/EcrMH1D8wgSmlpTzkLC57+BdGR341W2C8Dw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.18","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84059},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"b20df7caf20046b75ced61dfbbc4cbcc10b620c6","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.18_1773241290777_0.24690335538769292","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@async-kit/ratelimitx","version":"0.1.19","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.19","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"5a20624e75bfa0092e2f3d33fef47a830e42b653","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.19.tgz","fileCount":9,"integrity":"sha512-BlaeVVrCvjfF7+qIBVXZtUXdzgqclZENxYJuDf2sO28szmGpZ5FOcPwjzhrb089NLyr4qqnkcz4BSggO4q0/Rw==","signatures":[{"sig":"MEYCIQC+jqJ6m5DqvQKXiomUSWkJvWlKTPajueUT6YZhSISFvAIhANqDJZZ8ajziCA2h40m0pXYacsLGhSxuwHIGeNRt9Fua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.19","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84061},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"bd85d74abf16ccf96372466c5e8190bcd4a6acf9","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.19_1773241434668_0.41622755707118597","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@async-kit/ratelimitx","version":"0.1.20","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.20","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"5a0e5d043b226d39c84f1060fc7d8b952936c5bb","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.20.tgz","fileCount":9,"integrity":"sha512-tvJ8eFjepwper5TrEuep+3pYZTx+wE9GdHV3/NHo2QI/FQfv4j1m2BKQoeiDfG1KxFQ74tz7+iyj4F39G4ou8Q==","signatures":[{"sig":"MEYCIQC4iGUFJCSKTkVzY1e/m37f+McUjVGrz8UETEt+9hsRPgIhALENt2muUzaoSTwv8e5I7iUVycVptEXfZk4JJK/kPOaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.20","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84063},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"1906caa31e13169558be4d8f2a549083dca4d506","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.20_1773241585470_0.5088056138958843","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@async-kit/ratelimitx","version":"0.1.21","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.21","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"5b143f9b958b31d48c65d3ba8742cd655a9b9c85","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.21.tgz","fileCount":9,"integrity":"sha512-OZDWRjnALk2imBNgEP3BBal27xZIUP8/bwT0toPWBJFjM0DjZeWjGAYid75NOUKA4QGw878bKKRBKxFWnNM5cA==","signatures":[{"sig":"MEYCIQDFPbAkZ/Pgsc7lttYwTldysxg+VPxeFZ2TOcecjWaRUgIhAOo+I2EZouHCNfNUi5iQrqqEVJu8S5QzY/biG7SSGpIf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.21","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84065},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"d4943e96bea423627a1c5dfe82dca6ca36aeef01","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.21_1773241735202_0.6004732312043735","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@async-kit/ratelimitx","version":"0.1.22","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.22","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"f9807bc54926627ef97dba20b71ee371d2bad617","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.22.tgz","fileCount":9,"integrity":"sha512-LdeJRlmK8+APE5Zdbz+W4rTDyKwEa2Ka8qs8fugVleu4giXXmSWk1QHJw1Kcp490tq1VqKxEg1Vv5QsNwn/sgQ==","signatures":[{"sig":"MEUCIQCaUg3a6Y72QRgd/i+04UiUQiUeH5KiJCMzAj8Hf2o3vgIgGn5nI1meL1Klaz2EnCEYcs+lU09TQqxm6hHdEq3Qtww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.22","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84067},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"fa4896fc66a7cb16e21dd9450a8f74d0556f2cb2","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.22_1773241884374_0.3963388905787686","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@async-kit/ratelimitx","version":"0.1.23","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.23","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"adff809c017764fef998a077484d1a9f62b2a4fd","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.23.tgz","fileCount":9,"integrity":"sha512-1HEtyWzY+SwTrxO71uQQeklldldnwxtasFvJLQ17DzvE4ckQ5E94w0927QvZhxqlbTebU6Vla7vV52BGCGSvpQ==","signatures":[{"sig":"MEYCIQDgBxtrsCt1PQNxKZ8J/hVeLQQPdRGxakplhKgtNxU0MgIhAKe7hdCBXZCE0NmTO+TacFtO2+vPXcuau25AJqtZwPZJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.23","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84069},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"7f912ca82241bba621581e2b7253cc617b9f2606","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.23_1773242033589_0.08632078997033332","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@async-kit/ratelimitx","version":"0.1.24","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.24","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"807051c8a82dc4763c6cad97a71dbe040d47b900","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.24.tgz","fileCount":9,"integrity":"sha512-ksaf+xnPErNM656SaaiBiMzeHyhUVN2Uqcx8sU60ngLSTf+8Zi+qdb7h7gW/DIpBP68tdqEdqNTtIyR4WptKUA==","signatures":[{"sig":"MEUCIHdiWO7bIxvVLyg+jSypBArzaxIJs6IsoaFElwarl+WxAiEAwRXeNaihNfG+54gU3ZbqoogvR2IDq7LCV86wmgT/tmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.24","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84071},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"809bb455b6e42421b9ae4d02040b6461561f6402","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.24_1773242188665_0.5356647351273978","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@async-kit/ratelimitx","version":"0.1.25","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.25","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"58c64ed7aadcc553526f1446d88f3e9fabba12aa","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.25.tgz","fileCount":9,"integrity":"sha512-j7e5Cgdq5YU58N2r4WqsjsvVGbWHs4j1vj0G0rzUneNh6oFAH+UO8lbDUh1I6EPS6R2Hvy/nWvDXaunCFon5ag==","signatures":[{"sig":"MEUCIBHGFGJKaE9e4jHZmykJD38KAkcgOd0zYy41Xv8kxrXqAiEA/KGXmpjV6qjErfQFoLqwSIbSH/621N2AjDevt/ymQqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.25","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84073},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"c2d148aeb4a61389edae04c6f8008c492c55180d","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.25_1773242339375_0.7116210519521093","host":"s3://npm-registry-packages-npm-production"}},"0.1.26":{"name":"@async-kit/ratelimitx","version":"0.1.26","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","_id":"@async-kit/ratelimitx@0.1.26","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"dist":{"shasum":"4e523cbe86350fe1f77ec64ed520c31b516df877","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.1.26.tgz","fileCount":9,"integrity":"sha512-WED6V52m1WkRtIZmT9o+RQqEFKWEdfB1vHKjKLCEcRbTcENo2roC3kQ5oT5UsTW+yExeVj4xNwr89sGL1ournw==","signatures":[{"sig":"MEYCIQDlSK3+bQ1U2gdZOomOa4TwlKsogNtBK/eIkh8XYGx9BAIhAIgkmBCq4RRM4nFfUF0LWr7A74UJB2yH70L+WgAEUix7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.1.26","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":84075},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"19484f87f56b9c6342aece67bfd9e65c897132c5","scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"repository":{"url":"git+https://github.com/NexaLeaf/async-kit.git","type":"git","directory":"packages/ratelimitx"},"_npmVersion":"11.9.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","directories":{},"sideEffects":false,"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/ratelimitx_0.1.26_1773242483019_0.6293089584909859","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@async-kit/ratelimitx","version":"0.2.0","description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/NexaLeaf/async-kit.git","directory":"packages/ratelimitx"},"homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"publishConfig":{"access":"public"},"sideEffects":false,"scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.lib.json --noEmit"},"devDependencies":{},"gitHead":"f589ca61f0ee8b4e74e94cb2019745f6b63fc39e","_id":"@async-kit/ratelimitx@0.2.0","bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-6ZUiQ5QSO1Dt16Q1PEYP2Wh/X9p6D6yrIhNwXqyTZI66zUTpqQIQRVO8eklCIqWxHKMqUHCslQWYvZHcztdw6g==","shasum":"d07550abc65b4465891ce9b0191af03a099c9176","tarball":"https://registry.npmjs.org/@async-kit/ratelimitx/-/ratelimitx-0.2.0.tgz","fileCount":9,"unpackedSize":88603,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@async-kit%2fratelimitx@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlu/26UZZylgejgOD1UYxOYP6SBgfqkqi9SzEDe1hi5AIgeWJNGq/00hkW1yDM2+kXzA9ue4qJS/KPFxlGGeKiCmc="}]},"_npmUser":{"name":"palanisamym14","email":"palanisamym14@gmail.com"},"directories":{},"maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ratelimitx_0.2.0_1773298980753_0.8266806778491786"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-11T13:55:08.631Z","modified":"2026-03-12T07:03:01.228Z","0.1.2":"2026-03-11T13:55:09.248Z","0.1.3":"2026-03-11T14:23:43.791Z","0.1.4":"2026-03-11T14:26:17.306Z","0.1.5":"2026-03-11T14:29:06.800Z","0.1.6":"2026-03-11T14:31:34.263Z","0.1.7":"2026-03-11T14:34:03.454Z","0.1.8":"2026-03-11T14:36:40.379Z","0.1.9":"2026-03-11T14:39:04.087Z","0.1.10":"2026-03-11T14:41:26.308Z","0.1.11":"2026-03-11T14:43:57.276Z","0.1.12":"2026-03-11T14:46:27.586Z","0.1.13":"2026-03-11T14:48:59.576Z","0.1.14":"2026-03-11T14:51:31.209Z","0.1.15":"2026-03-11T14:54:04.216Z","0.1.16":"2026-03-11T14:56:30.230Z","0.1.17":"2026-03-11T14:58:54.296Z","0.1.18":"2026-03-11T15:01:30.943Z","0.1.19":"2026-03-11T15:03:54.837Z","0.1.20":"2026-03-11T15:06:25.618Z","0.1.21":"2026-03-11T15:08:55.365Z","0.1.22":"2026-03-11T15:11:24.534Z","0.1.23":"2026-03-11T15:13:53.752Z","0.1.24":"2026-03-11T15:16:28.822Z","0.1.25":"2026-03-11T15:18:59.561Z","0.1.26":"2026-03-11T15:21:23.157Z","0.2.0":"2026-03-12T07:03:00.908Z"},"bugs":{"url":"https://github.com/NexaLeaf/async-kit/issues"},"license":"MIT","homepage":"https://github.com/NexaLeaf/async-kit/tree/main/packages/ratelimitx#readme","keywords":["rate-limit","token-bucket","sliding-window","throttle","api"],"repository":{"type":"git","url":"git+https://github.com/NexaLeaf/async-kit.git","directory":"packages/ratelimitx"},"description":"Token bucket and sliding window rate limiter for JavaScript/TypeScript","maintainers":[{"name":"palanisamym14","email":"palanisamym14@gmail.com"}],"readme":"<div align=\"center\">\n\n<img src=\"https://capsule-render.vercel.app/api?type=rect&color=gradient&customColorList=9&height=120&section=header&text=ratelimitx&fontSize=50&fontColor=fff&animation=fadeIn&desc=%40async-kit%2Fratelimitx&descAlignY=75&descAlign=50\" width=\"100%\"/>\n\n<br/>\n\n[![npm](https://img.shields.io/npm/v/@async-kit/ratelimitx?style=for-the-badge&logo=npm&color=96CEB4)](https://www.npmjs.com/package/@async-kit/ratelimitx)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](../../LICENSE)\n[![Bundle size](https://img.shields.io/bundlephobia/minzip/@async-kit/ratelimitx?style=for-the-badge&color=96CEB4)](https://bundlephobia.com/package/@async-kit/ratelimitx)\n[![Node](https://img.shields.io/badge/Node-%3E%3D18-339933?style=for-the-badge&logo=node.js&logoColor=white)](https://nodejs.org/)\n[![Browser](https://img.shields.io/badge/Browser-Supported-4285F4?style=for-the-badge&logo=googlechrome&logoColor=white)](#compatibility)\n\n**Multi-algorithm rate limiter — Token Bucket, Sliding Window, Fixed Window, and Composite enforcement with AbortSignal support.**\n\n*Four algorithms, one interface. Zero dependencies.*\n\n</div>\n\n---\n\n## Install\n\n```bash\nnpm install @async-kit/ratelimitx\n```\n\n## Quick Start\n\n```typescript\nimport { TokenBucket, SlidingWindow, FixedWindow, CompositeLimiter } from '@async-kit/ratelimitx';\n\n// Token Bucket — burst-friendly\nconst bucket = new TokenBucket({ capacity: 10, refillRate: 2, refillInterval: 1000 });\nawait bucket.consume(); // waits until a token is available\n\n// Sliding Window — strict per-window limit\nconst window = new SlidingWindow({ windowMs: 60_000, maxRequests: 100 });\nawait window.waitAndAcquire();\n\n// Fixed Window — simplest, resets on schedule\nconst fw = new FixedWindow({ windowMs: 60_000, maxRequests: 100 });\nfw.acquire(); // throws RateLimitError if over limit\n\n// Composite — enforce multiple tiers simultaneously\nconst limiter = new CompositeLimiter([\n  new TokenBucket({ capacity: 10, refillRate: 10, refillInterval: 1000 }),\n  new SlidingWindow({ windowMs: 60_000, maxRequests: 500 }),\n]);\nawait limiter.waitAndAcquire();\n```\n\n## API\n\n### `TokenBucket`\n\nTokens accumulate at `refillRate` per `refillInterval` up to `capacity`. Burst-friendly.\n\n```typescript\nconst bucket = new TokenBucket({ capacity: 10, refillRate: 2, refillInterval: 1000 });\n```\n\n| Method | Description |\n|---|---|\n| `.tryConsume(count?)` | Non-blocking; `true` if tokens available |\n| `.consume(count?, signal?)` | **Async — waits** until tokens available; only throws if `count > capacity` |\n| `.acquireOrThrow(count?)` | Throws `RateLimitError` immediately if tokens unavailable |\n| `.tryAcquire()` | Alias for `tryConsume()` |\n| `.acquire()` | Alias for `acquireOrThrow()` |\n| `.waitAndAcquire(signal?)` | Alias for `consume(1, signal)` |\n| `.reset()` | Refill to capacity, reset clock |\n| `.setCapacity(n)` | Hot-resize; clamps current tokens if lower |\n| `.available` | Current token count (after refill) |\n\n### `SlidingWindow`\n\nTracks exact timestamps in a **ring buffer** (`Float64Array`). O(k) prune, no burst.\n\n```typescript\nconst win = new SlidingWindow({ windowMs: 60_000, maxRequests: 100 });\n```\n\n| Method | Description |\n|---|---|\n| `.tryAcquire()` | Non-blocking; `true` if a slot is available |\n| `.acquire()` | Throws `RateLimitError` immediately if at limit |\n| `.waitAndAcquire(signal?)` | Async — waits until the oldest request expires |\n| `.currentCount` | Active request count in the current window |\n\n### `FixedWindow`\n\nCounts requests in a fixed time bucket that resets every `windowMs`.\n\n```typescript\nconst fw = new FixedWindow({\n  windowMs: 60_000,\n  maxRequests: 100,\n  onWindowReset: (t) => console.log('Reset at', t),\n});\n```\n\n| Method | Description |\n|---|---|\n| `.tryAcquire()` | Non-blocking; `true` if under limit |\n| `.acquire()` | Throws `RateLimitError` if at limit |\n| `.waitAndAcquire(signal?)` | Async — waits until the window resets |\n| `.reset()` | Manually reset count + fires `onWindowReset` callback |\n| `.currentCount` | Requests in current window |\n| `.windowResetMs` | Ms remaining until the window resets |\n\n> **`reset()` fires `onWindowReset`** — the callback is called on both automatic resets and manual `.reset()` calls, keeping monitoring/UI state consistent.\n\n### `CompositeLimiter`\n\nEnforces **all** provided limiters simultaneously. Useful for multi-tier API limits.\n\n```typescript\nconst limiter = new CompositeLimiter([\n  new TokenBucket({ capacity: 10, refillRate: 10, refillInterval: 1000 }),\n  new SlidingWindow({ windowMs: 60_000, maxRequests: 500 }),\n  new FixedWindow({ windowMs: 3_600_000, maxRequests: 5000 }),\n]);\n```\n\n| Method | Description |\n|---|---|\n| `.tryAcquire()` | `true` only if **all** limiters pass |\n| `.acquire()` | Throws on the first limiter that rejects |\n| `.waitAndAcquire(signal?)` | Async — sleeps for the actual `retryAfterMs` of the blocking limiter (no busy-poll) |\n\n> **Smart wait:** `waitAndAcquire` reads `RateLimitError.retryAfterMs` from whichever limiter blocks and sleeps exactly that long — no 1 ms polling loop.\n\n### `RateLimitError`\n\n```typescript\ntry {\n  limiter.acquire();\n} catch (err) {\n  if (err instanceof RateLimitError) {\n    console.log(err.algorithm);     // 'token-bucket' | 'sliding-window' | 'fixed-window'\n    console.log(err.retryAfterMs);  // ms to wait before retrying\n    console.log(err.limit);         // configured limit\n    console.log(err.current);       // current usage\n  }\n}\n```\n\n## `Limiter` Interface\n\nAll three classes implement `Limiter`, making them interchangeable:\n\n```typescript\ninterface Limiter {\n  tryAcquire(): boolean;\n  acquire(): void;\n  waitAndAcquire(signal?: AbortSignal): Promise<void>;\n}\n```\n\n## Algorithm Comparison\n\n| Algorithm | Burst | Memory | Boundary spike | Best For |\n|---|---|---|---|---|\n| Token Bucket | ✅ Yes | O(1) | No | API quotas, outbound throttling |\n| Sliding Window | ❌ No | O(maxRequests) | No | Strict per-window enforcement |\n| Fixed Window | ✅ At boundary | O(1) | Yes | Simple quotas, easy reasoning |\n| CompositeLimiter | Depends | Combined | Depends | Multi-tier API limits |\n\n## Examples\n\n### Express middleware — per-IP sliding window\n\n```typescript\nimport express from 'express';\nimport { SlidingWindow, RateLimitError } from '@async-kit/ratelimitx';\n\nconst app = express();\nconst limiters = new Map<string, SlidingWindow>();\n\napp.use((req, res, next) => {\n  const ip = req.ip ?? 'unknown';\n  if (!limiters.has(ip)) {\n    limiters.set(ip, new SlidingWindow({ windowMs: 60_000, maxRequests: 100 }));\n  }\n  try {\n    limiters.get(ip)!.acquire();\n    next();\n  } catch (err) {\n    if (err instanceof RateLimitError) {\n      res.set('Retry-After', String(Math.ceil(err.retryAfterMs / 1000)));\n      res.set('X-RateLimit-Limit', String(err.limit));\n      res.set('X-RateLimit-Remaining', '0');\n      res.status(429).json({ error: 'Too Many Requests', retryAfterMs: err.retryAfterMs });\n    }\n  }\n});\n```\n\n### Outbound API quota — token bucket for GitHub API\n\n```typescript\nimport { TokenBucket } from '@async-kit/ratelimitx';\nimport { Octokit } from 'octokit';\n\n// GitHub: 5 000 authenticated requests / hour ≈ 1.38 / sec\nconst github = new TokenBucket({\n  capacity: 30,         // burst: up to 30 back-to-back\n  refillRate: 1,\n  refillInterval: 720,  // 720 ms ≈ 1.38 tokens/sec\n});\n\nconst octokit = new Octokit({ auth: process.env.GH_TOKEN });\n\nasync function githubRequest<T>(fn: () => Promise<T>): Promise<T> {\n  // Block until a token is available (never drops requests)\n  await github.waitAndAcquire();\n  return fn();\n}\n\n// Safe to call in a tight loop — will naturally pace itself\nconst repos = await githubRequest(() =>\n  octokit.rest.repos.listForOrg({ org: 'my-org', per_page: 100 })\n);\n```\n\n### Multi-tier composite limit (per-second + per-minute + per-hour)\n\n```typescript\nimport { TokenBucket, SlidingWindow, FixedWindow, CompositeLimiter } from '@async-kit/ratelimitx';\n\n// Model a typical SaaS API tier:\n//   • burst 10 back-to-back\n//   • 60 / min steady-state\n//   • 1 000 / hr hard quota\nconst apiLimiter = new CompositeLimiter([\n  new TokenBucket({ capacity: 10, refillRate: 10, refillInterval: 1_000 }),\n  new SlidingWindow({ windowMs: 60_000,    maxRequests: 60  }),\n  new FixedWindow  ({ windowMs: 3_600_000, maxRequests: 1_000,\n    onWindowReset: (t) => console.log('Hourly quota reset at', new Date(t).toISOString()),\n  }),\n]);\n\nasync function callSaasApi(endpoint: string) {\n  await apiLimiter.waitAndAcquire();\n  return fetch(endpoint).then(r => r.json());\n}\n```\n\n### Combine with retryx for automatic backoff\n\n```typescript\nimport { SlidingWindow, RateLimitError } from '@async-kit/ratelimitx';\nimport { retry } from '@async-kit/retryx';\n\nconst limiter = new SlidingWindow({ windowMs: 1_000, maxRequests: 10 });\n\nconst result = await retry(\n  () => { limiter.acquire(); return callApi(); },\n  {\n    maxAttempts: 60,\n    retryIf: (err) => err instanceof RateLimitError,\n    onRetry: (_n, err) => {\n      const wait = (err as RateLimitError).retryAfterMs;\n      console.log(`Rate limited — retrying in ${wait}ms`);\n    },\n  }\n);\n```\n\n### Async queue consumer with `waitAndAcquire`\n\n```typescript\nimport { TokenBucket } from '@async-kit/ratelimitx';\n\nconst bucket = new TokenBucket({ capacity: 5, refillRate: 5, refillInterval: 1_000 });\n\n// Consumer loop — processes at most 5 items/sec no matter how fast items arrive\nasync function processQueue(queue: AsyncIterable<Job>) {\n  for await (const job of queue) {\n    await bucket.waitAndAcquire();      // blocks here when the bucket is empty\n    void processJob(job);               // fire without awaiting\n  }\n}\n```\n\n### Fixed window with reset callback for quota UI\n\n```typescript\nimport { FixedWindow } from '@async-kit/ratelimitx';\n\nlet remaining = 100;\n\nconst fw = new FixedWindow({\n  windowMs: 60_000,\n  maxRequests: 100,\n  onWindowReset: () => { remaining = 100; },\n});\n\nfunction tryRequest(): { allowed: boolean; remaining: number; resetIn: number } {\n  const allowed = fw.tryAcquire();\n  if (allowed) remaining--;\n  return { allowed, remaining, resetIn: fw.windowResetMs };\n}\n```\n\n### Dynamic capacity — hot-resize for plan upgrades\n\n```typescript\nimport { TokenBucket } from '@async-kit/ratelimitx';\n\nconst bucket = new TokenBucket({ capacity: 10, refillRate: 10, refillInterval: 1_000 });\n\n// User upgrades from Free (10/s) to Pro (100/s) — no restart needed\nasync function onPlanUpgrade(userId: string, newPlan: 'free' | 'pro') {\n  const newCapacity = newPlan === 'pro' ? 100 : 10;\n  bucket.setCapacity(newCapacity);\n  console.log(`User ${userId} upgraded to ${newPlan} — new capacity: ${newCapacity}`);\n}\n```\n\n### Custom `Limiter` implementation\n\n```typescript\nimport type { Limiter } from '@async-kit/ratelimitx';\nimport { CompositeLimiter } from '@async-kit/ratelimitx';\n\n// Roll your own limiter and plug it into CompositeLimiter\nclass DailyQuotaLimiter implements Limiter {\n  private used = 0;\n  constructor(private readonly limit: number) {}\n\n  tryAcquire(): boolean {\n    if (this.used < this.limit) { this.used++; return true; }\n    return false;\n  }\n\n  acquire(): void {\n    if (!this.tryAcquire()) throw new Error(`Daily quota of ${this.limit} exhausted`);\n  }\n\n  async waitAndAcquire(): Promise<void> {\n    // Block until midnight UTC\n    const ms = msUntilMidnightUTC();\n    await new Promise(r => setTimeout(r, ms));\n    this.used = 0;\n    this.used++;\n  }\n}\n\nconst composite = new CompositeLimiter([\n  new SlidingWindow({ windowMs: 1_000, maxRequests: 10 }),\n  new DailyQuotaLimiter(10_000),\n]);\n```\n\n## Types\n\n```typescript\nimport type {\n  TokenBucketOptions,\n  SlidingWindowOptions,\n  FixedWindowOptions,\n  Limiter,\n  RateLimitAlgorithm,\n} from '@async-kit/ratelimitx';\n```\n\n## Compatibility\n\n| Environment | Support | Notes |\n|---|---|---|\n| **Node.js** | ≥ 18 | Recommended ≥ 24 for best performance |\n| **Deno** | ✅ | Via npm specifier (`npm:@async-kit/ratelimitx`) |\n| **Bun** | ✅ | Full support |\n| **Chrome** | ≥ 80 | ESM via bundler or native import |\n| **Firefox** | ≥ 75 | ESM via bundler or native import |\n| **Safari** | ≥ 13.1 | ESM via bundler or native import |\n| **Edge** | ≥ 80 | ESM via bundler or native import |\n| **React Native** | ✅ | Via Metro bundler |\n| **Cloudflare Workers** | ✅ | ESM, `AbortSignal` natively supported |\n| **Vercel Edge Runtime** | ✅ | ESM, no `process` / `fs` dependencies |\n\n**No Node.js built-ins are used.** The package relies only on standard JavaScript (`Promise`, `setTimeout`, `clearTimeout`, `Float64Array`, `AbortSignal`, `DOMException`) — universally available in modern runtimes and browsers.\n\n> **`Float64Array`** (used by `SlidingWindow`'s ring buffer) is part of the ECMAScript spec and available in every JavaScript environment including old browsers and edge workers.\n\n## License\n\nMIT © async-kit contributors · Part of the [async-kit](../../README.md) ecosystem\n","readmeFilename":"README.md"}