{"_id":"@hono-rate-limiter/redis","_rev":"4-5280194d820162852d0f8413ee90f6eb","name":"@hono-rate-limiter/redis","description":"<div align=\"center\">","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@hono-rate-limiter/redis","version":"0.1.0","_id":"@hono-rate-limiter/redis@0.1.0","maintainers":[{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"}],"dist":{"shasum":"20818f7c42a458178d73ff953925af437056e3c8","tarball":"https://registry.npmjs.org/@hono-rate-limiter/redis/-/redis-0.1.0.tgz","fileCount":9,"integrity":"sha512-yiKFORBWbSqpE4Ky5B+eSlVESre244Mim8WPUunlwbyEu5crzBJUZFvUX8Tto+oDeO3isfGM0IIQwgKGXhD4FA==","signatures":[{"sig":"MEQCIDuustz9vRJ4UvTsu8cXsJ+9pjx362Qkd61khT5MwhWWAiBDOAmPF7gQEUIllgRovL07dits6E/jJZgsLcekyDhnCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20312},"main":"./index.cjs.js","types":"./index.cjs.d.ts","module":"./index.esm.js","gitHead":"e01f4f82a18c098cf8443c082527f2da8a9540f1","_npmUser":{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"},"_npmVersion":"9.5.0","description":"<div align=\"center\">","directories":{},"_nodeVersion":"19.7.0","_hasShrinkwrap":false,"peerDependencies":{"hono-rate-limiter":"^0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/redis_0.1.0_1711266252615_0.8611360355952744","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@hono-rate-limiter/redis","version":"0.1.1","keywords":["hono","redis","database","serverless","edge","rate-limiting","rate-limiter","honojs"],"license":"MIT","_id":"@hono-rate-limiter/redis@0.1.1","maintainers":[{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"}],"homepage":"https://hono-rate-limiter.vercel.app","bugs":{"url":"https://github.com/rhinobase/hono-rate-limiter/issues"},"dist":{"shasum":"1de3b6f14cb97392ab58dc4082f788fe204fcde2","tarball":"https://registry.npmjs.org/@hono-rate-limiter/redis/-/redis-0.1.1.tgz","fileCount":9,"integrity":"sha512-ZmB86cKUkPSYZhkUjlMfZoT78USTPSMGahQGuDJpWLc7r6jdXTGIg9iwi41pwwzctK4k7vDFhE6Iv3YmK+xRSA==","signatures":[{"sig":"MEUCIDsZEw4Llzuv66ffhcUkuUZOrvWG0U5l/02m1A43io3YAiEAtel+DKnIItD/I56TGDccOXkwWw0zNERm0PBbM//aRoQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19190},"main":"./index.cjs.js","types":"./index.cjs.d.ts","module":"./index.esm.js","gitHead":"165e1c966f41ce85ace8988fe179380e93becd58","_npmUser":{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"},"repository":{"url":"git+https://github.com/rhinobase/hono-rate-limiter.git","type":"git","directory":"packages/redis"},"_npmVersion":"10.2.4","description":"<div align=\"center\">","directories":{},"_nodeVersion":"18.19.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"hono-rate-limiter":"^0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/redis_0.1.1_1711297956577_0.7045194910678196","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@hono-rate-limiter/redis","version":"0.1.2","keywords":["hono","redis","database","serverless","edge","rate-limiting","rate-limiter","honojs"],"license":"MIT","_id":"@hono-rate-limiter/redis@0.1.2","maintainers":[{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"}],"homepage":"https://hono-rate-limiter.vercel.app","bugs":{"url":"https://github.com/rhinobase/hono-rate-limiter/issues"},"dist":{"shasum":"a8ac137271e8154babadc706ebd0597c7782777f","tarball":"https://registry.npmjs.org/@hono-rate-limiter/redis/-/redis-0.1.2.tgz","fileCount":9,"integrity":"sha512-9TYx7yJki/qG8eEzfNQUECA//DnoHcMyqKpFtBLpwwo/uA7T4PzYUQbSBlaEOrddFzmCOT5vreTOyH/UZzDqXQ==","signatures":[{"sig":"MEYCIQDxYFXzwMv7tnxOjcUUEGHsTbXOldH2My59420e49SQkAIhAP+v5cpxRbG5UF1okgvr4CG6hSBnwsK+oahEBQ2GHcWn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19317},"main":"./index.cjs.js","types":"./index.cjs.d.ts","module":"./index.esm.js","gitHead":"cded4eec9973f2dca2fdf7dc0f4c2f59f622b122","_npmUser":{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"},"repository":{"url":"git+https://github.com/rhinobase/hono-rate-limiter.git","type":"git","directory":"packages/redis"},"_npmVersion":"10.5.0","description":"<div align=\"center\">","directories":{},"_nodeVersion":"18.20.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"hono-rate-limiter":"^0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/redis_0.1.2_1713328272839_0.2208391528370235","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@hono-rate-limiter/redis","version":"0.1.3","keywords":["hono","redis","database","serverless","edge","rate-limiting","rate-limiter","honojs"],"license":"MIT","_id":"@hono-rate-limiter/redis@0.1.3","maintainers":[{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"}],"homepage":"https://hono-rate-limiter.vercel.app","bugs":{"url":"https://github.com/rhinobase/hono-rate-limiter/issues"},"dist":{"shasum":"e1a91bc39f9a4b926fc15d32279b26e397091364","tarball":"https://registry.npmjs.org/@hono-rate-limiter/redis/-/redis-0.1.3.tgz","fileCount":9,"integrity":"sha512-mlKd7oRNODnHB4ZqKf0aSF6Q01TBAY7zTA/YqkVuWsqUDs3O4q2XLHmlttcmLmTQvSQr4kZkLGCEMoRVV3dN+w==","signatures":[{"sig":"MEQCID7x1ZsV6Ty1wsg1cw3RJLyfYdyg01Ttuqx6Eq9E7F2+AiBX32Q8F9acR9nuX7qtd01pMeYtg0qYcMaUXCk9k1AiVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12953},"main":"./index.cjs.js","types":"./index.cjs.d.ts","module":"./index.esm.js","gitHead":"c012b76a07c1dd2b01fe0b9af0465768f15bfa7c","_npmUser":{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"},"repository":{"url":"git+https://github.com/rhinobase/hono-rate-limiter.git","type":"git","directory":"packages/redis"},"_npmVersion":"10.5.0","description":"<div align=\"center\">","directories":{},"_nodeVersion":"18.20.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"hono-rate-limiter":"^0.2.1"},"_npmOperationalInternal":{"tmp":"tmp/redis_0.1.3_1714532514418_0.3712989784414651","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@hono-rate-limiter/redis","version":"0.1.4","license":"MIT","keywords":["hono","redis","database","serverless","edge","rate-limiting","rate-limiter","honojs"],"homepage":"https://hono-rate-limiter.vercel.app","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/rhinobase/hono-rate-limiter.git","directory":"packages/redis"},"bugs":{"url":"https://github.com/rhinobase/hono-rate-limiter/issues"},"peerDependencies":{"hono-rate-limiter":"^0.2.1"},"types":"./index.cjs.d.ts","module":"./index.esm.js","main":"./index.cjs.js","_id":"@hono-rate-limiter/redis@0.1.4","gitHead":"fda99a8a833df250a9f7e0318bf17af58f912a33","description":"<div align=\"center\">","_nodeVersion":"20.11.1","_npmVersion":"10.2.4","dist":{"integrity":"sha512-RSrVX5N2Oo/xXApskegu667cBVHyr8RXGWnbRDGjU2py8pN4BttEKSHA0iKi3BAwh1xSkENgDRng4tpFD9DbKg==","shasum":"950fe61db4452d1c8ced57bb38bc3b25b79c6252","tarball":"https://registry.npmjs.org/@hono-rate-limiter/redis/-/redis-0.1.4.tgz","fileCount":10,"unpackedSize":12261,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC+kyObus2yMiD4nM7pt/KuLkVkyos19/afLM2EV+gkTAiBbfWt9Y/ShAEGItz+8o5p2FiT7fKC0Kwq94b/CbR5iiA=="}]},"_npmUser":{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redis_0.1.4_1719387732012_0.6970000657611433"},"_hasShrinkwrap":false}},"time":{"created":"2024-03-24T07:44:12.514Z","modified":"2024-06-26T07:42:12.349Z","0.1.0":"2024-03-24T07:44:12.760Z","0.1.1":"2024-03-24T16:32:36.726Z","0.1.2":"2024-04-17T04:31:12.985Z","0.1.3":"2024-05-01T03:01:54.559Z","0.1.4":"2024-06-26T07:42:12.141Z"},"maintainers":[{"name":"mathuraditya724","email":"mathuraditya724@gmail.com"}],"repository":{"type":"git","url":"git+https://github.com/rhinobase/hono-rate-limiter.git","directory":"packages/redis"},"keywords":["hono","redis","database","serverless","edge","rate-limiting","rate-limiter","honojs"],"license":"MIT","homepage":"https://hono-rate-limiter.vercel.app","bugs":{"url":"https://github.com/rhinobase/hono-rate-limiter/issues"},"readme":"# <div align=\"center\">🔥`@hono-rate-limiter/redis`🔥</div>\r\n\r\n<div align=\"center\">\r\n\r\n[![tests](https://img.shields.io/github/actions/workflow/status/rhinobase/hono-rate-limiter/test.yml)](https://github.com/rhinobase/hono-rate-limiter/actions/workflows/test.yml)\r\n[![npm version](https://img.shields.io/npm/v/@hono-rate-limiter/redis.svg)](https://npmjs.org/package/@hono-rate-limiter/redis \"View this project on NPM\")\r\n[![npm downloads](https://img.shields.io/npm/dm/@hono-rate-limiter/redis)](https://www.npmjs.com/package/@hono-rate-limiter/redis)\r\n[![license](https://img.shields.io/npm/l/@hono-rate-limiter/redis)](LICENSE)\r\n\r\n</div>\r\n\r\n<div align=\"center\">\r\n\r\nA serverless [`redis`](https://github.com/redis/redis) store for the\r\n[`hono-rate-limiter`](https://github.com/rhinobase/hono-rate-limiter)\r\nmiddleware.\r\n\r\n</div>\r\n\r\n## Installation\r\n\r\n```sh\r\n# Using npm/yarn/pnpm/bun\r\nnpm add @hono-rate-limiter/redis\r\n```\r\n\r\n## Usage\r\n\r\n### Examples\r\n\r\nUsing with [`@vercel/kv`](https://github.com/redis/node-redis)\r\n\r\n```ts\r\nimport { RedisStore } from \"@hono-rate-limiter/redis\";\r\nimport { kv } from \"@vercel/kv\";\r\nimport { rateLimiter } from \"hono-rate-limiter\";\r\n\r\nconst limiter = rateLimiter({\r\n  windowMs: 15 * 60 * 1000, // 15 minutes\r\n  limit: 100, // Limit each IP to 100 requests per `window` (here, per 15 minutes).\r\n  standardHeaders: \"draft-6\", // draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header\r\n  keyGenerator: (c) => c.req.header(\"cf-connecting-ip\") ?? \"\", // Method to generate custom identifiers for clients.\r\n  store: new RedisStore({ client: kv }), // Redis, MemoryStore, etc. See below.\r\n});\r\n\r\n// Apply the rate limiting middleware to all requests.\r\napp.use(limiter);\r\n```\r\n\r\n### Configuration\r\n\r\n#### `client`\r\n\r\nThe function used to send commands to Redis. The function signature is as\r\nfollows:\r\n\r\n```ts\r\nexport type RedisClient = {\r\n  scriptLoad: (script: string) => Promise<string>;\r\n  evalsha: <TArgs extends unknown[], TData = unknown>(sha1: string, keys: string[], args: TArgs) => Promise<TData>;\r\n  decr: (key: string) => Promise<number>;\r\n  del: (key: string) => Promise<number>;\r\n};\r\n```\r\n\r\n#### Usage with connectors\r\n\r\n[`@vercel/kv`](https://github.com/@vercel/kv)\r\n\r\n```ts\r\nimport { kv } from \"@vercel/kv\";\r\n\r\nconst store = new RedisStore({ client: kv });\r\n```\r\n\r\n[`@upstash/redis`](https://github.com/@upstash/redis)\r\n\r\n```ts\r\nimport { Redis } from \"@upstash/redis\"\r\n/**\r\n * for Cloudflare\r\n * import { Redis } from \"@upstash/redis/cloudflare\"\r\n */\r\n\r\nconst redis = new Redis({\r\n  url: <UPSTASH_REDIS_REST_URL>,\r\n  token: <UPSTASH_REDIS_REST_TOKEN>,\r\n})\r\n\r\nconst store = new RedisStore({ client: redis })\r\n```\r\n\r\n#### `prefix`\r\n\r\nThe text to prepend to the key in Redis.\r\n\r\nDefaults to `hrl:`.\r\n\r\n#### `resetExpiryOnChange`\r\n\r\nWhether to reset the expiry for a particular key whenever its hit count changes.\r\n\r\nDefaults to `false`.\r\n\r\n## Contributing\r\n\r\nWe would love to have more contributors involved!\r\n\r\nTo get started, please read our [Contributing Guide](https://github.com/rhinobase/hono-rate-limiter/blob/main/CONTRIBUTING.md).\r\n\r\n## Credits\r\n\r\nThe `@hono-rate-limiter/redis` project is heavily inspired by [rate-limit-redis](https://github.com/express-rate-limit/rate-limit-redis)\r\n","readmeFilename":"README.md"}