{"_id":"@api-guard/trafix","_rev":"6-431cca0fd60bb7cfae96e20e73190204","name":"@api-guard/trafix","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@api-guard/trafix","version":"1.0.0","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"author":{"name":"Sujan"},"license":"MIT","_id":"@api-guard/trafix@1.0.0","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"homepage":"https://github.com/ninjasujan/throttle-guard#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"dist":{"shasum":"ffa7dcfa0d760eee857627234f07bf2126fe495c","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.0.tgz","fileCount":38,"integrity":"sha512-J70mMmzZq7VS8Iui11phs4roPpJXCCFrKnpHvQrLMXePVRemNyEcBPhjAYH/G+9vTzU3DKPlt8ZWzq4oq79xYw==","signatures":[{"sig":"MEUCIBv0spMHhAtyfzq0gN0nP8rpm0/kKPtp2I/3YTjoCwFVAiEAgPUAm2Y3diemLu+IU0HCX1EJrjyI14ED6LQuY1VHQE0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19534},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"dec19ff056dfad58e18423da31abec566fdd0e46","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"repository":{"url":"git+https://github.com/ninjasujan/throttle-guard.git","type":"git","directory":"libs/trafix"},"_npmVersion":"10.5.2","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","directories":{},"_nodeVersion":"20.13.1","dependencies":{"ioredis":"^5.6.0","@nestjs-modules/ioredis":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0"},"peerDependencies":{"tslib":"^2.8.1","@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/trafix_1.0.0_1745049527416_0.6792718391487125","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@api-guard/trafix","version":"1.0.1","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"author":{"name":"Sujan"},"license":"MIT","_id":"@api-guard/trafix@1.0.1","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"homepage":"https://github.com/ninjasujan/throttle-guard#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"dist":{"shasum":"ef94130dcdd842e847d5695f9cde3bdaaeb7d993","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.1.tgz","fileCount":38,"integrity":"sha512-jO31EhyOB0AGGSzGoM7Kgah4ICth/N3eXirrx5Rqfl+2oVwBwqop0DUJKixgnhLD909TIRt3kDTVWrvFIyWo7A==","signatures":[{"sig":"MEQCIDnNoBL4BD2ibE/vYOWMQMu2qKQW0a4kzsb+2A7/jtqlAiBGq0bKQJQ3K9z8fkJAG5eujJW3d9tKqnWxYd30x05slA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19534},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"92b3ba803d6566136884a2107771b30d2720a0f4","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"repository":{"url":"git+https://github.com/ninjasujan/throttle-guard.git","type":"git","directory":"libs/trafix"},"_npmVersion":"10.5.2","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","directories":{},"_nodeVersion":"20.13.1","dependencies":{"ioredis":"^5.6.0","@nestjs-modules/ioredis":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0"},"peerDependencies":{"tslib":"^2.8.1","@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/trafix_1.0.1_1745050006013_0.8040602322094985","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@api-guard/trafix","version":"1.0.2","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"author":{"name":"Sujan"},"license":"MIT","_id":"@api-guard/trafix@1.0.2","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"homepage":"https://github.com/ninjasujan/throttle-guard#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"dist":{"shasum":"36b1cfd821fedf71555b9e831294c6314f2f9b24","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.2.tgz","fileCount":37,"integrity":"sha512-u1ZCJmYY+wnG/TC2o5TdTyEaA5/6MZhaVBwqAdOE7JD6Q1FzDrEJ9EcS5jXYoFiju+BdlP4xMV9PQqv885Mcag==","signatures":[{"sig":"MEUCIFitGwfkClB7XptltE4aU4zMFyb5JUGKTz7rV2l4d82WAiEA6OfO8RvC2VlIdtVmVDa61io60yfqX1PkBOi1qeGZKWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16520},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"8d6edd9251ed8dffd731070a6f7983579eef27c2","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"repository":{"url":"git+https://github.com/ninjasujan/throttle-guard.git","type":"git","directory":"libs/trafix"},"_npmVersion":"10.5.2","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","directories":{},"_nodeVersion":"20.13.1","dependencies":{"ioredis":"^5.6.0","@nestjs-modules/ioredis":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0"},"peerDependencies":{"tslib":"^2.8.1","@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/trafix_1.0.2_1745050183265_0.01071037533482655","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@api-guard/trafix","version":"1.0.3","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"author":{"name":"Sujan"},"license":"MIT","_id":"@api-guard/trafix@1.0.3","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"homepage":"https://github.com/ninjasujan/throttle-guard#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"dist":{"shasum":"bc7bbc1143363379bf9d79a060f029483d005a90","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.3.tgz","fileCount":37,"integrity":"sha512-WJaxlu+VfRQk0CYI4xIexhjNyxEktKyUZiHAImXwSYX89AOTFN+RqP1LFW2XCbEAXakzCgkqHJcEyXebOiBzLQ==","signatures":[{"sig":"MEUCIQDJ0NY4HVS/Ep4rtV+Czr29KMHw8rKG48XczkZv/n4IRgIgXmmyaf2lx+wI/5M0EJg7LIiPTd36INeAizbx8+AUySg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16520},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"8d6edd9251ed8dffd731070a6f7983579eef27c2","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"repository":{"url":"git+https://github.com/ninjasujan/throttle-guard.git","type":"git","directory":"libs/trafix"},"_npmVersion":"10.5.2","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","directories":{},"_nodeVersion":"20.13.1","dependencies":{"ioredis":"^5.6.0","@nestjs-modules/ioredis":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0"},"peerDependencies":{"tslib":"^2.8.1","@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/trafix_1.0.3_1745056042760_0.9611214569934134","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@api-guard/trafix","version":"1.0.4","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"author":{"name":"Sujan"},"license":"MIT","_id":"@api-guard/trafix@1.0.4","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"homepage":"https://github.com/ninjasujan/throttle-guard/tree/main/libs/trafix#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"dist":{"shasum":"38a6d2f640e1a84ceeee476abc279f2f72c3956b","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.4.tgz","fileCount":38,"integrity":"sha512-3x+1/tWipoYZyKk/KAxU4CN0Y2tanEQd9ZI2Ch8gBGQc9ZOLNxFQUaE1C3IEl6Dmuz3wAsuCDgPylYpVSCceeA==","signatures":[{"sig":"MEUCIQDtecR6CLYuxPWF5gsw14P8iheDkHzYSQlgm4FwVof62AIgFzKaVrV7+6xiSP5zI1WOAL5nw3zD7TJq9kAWayy5nSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":18923},"main":"./src/index.js","type":"commonjs","types":"./src/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"43fe530451409754b5706b47b91ef198b4cd40a3","scripts":{"test":"jest","build":"tsc"},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"repository":{"url":"git+https://github.com/ninjasujan/throttle-guard.git","type":"git","directory":"libs/trafix"},"_npmVersion":"10.5.2","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","directories":{},"_nodeVersion":"20.13.1","dependencies":{"ioredis":"^5.6.0","@nestjs-modules/ioredis":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0"},"peerDependencies":{"tslib":"^2.8.1","@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/trafix_1.0.4_1745056304421_0.7960264183139525","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@api-guard/trafix","version":"1.0.5","description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","license":"MIT","author":{"name":"Sujan"},"repository":{"type":"git","url":"git+https://github.com/ninjasujan/throttle-guard.git","directory":"libs/trafix"},"homepage":"https://github.com/ninjasujan/throttle-guard/tree/main/libs/trafix#readme","bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"type":"commonjs","main":"./src/index.js","types":"./src/index.d.ts","scripts":{"build":"tsc","test":"jest"},"dependencies":{"@nestjs-modules/ioredis":"^2.0.2","ioredis":"^5.6.0"},"peerDependencies":{"@nestjs/common":"^10.0.0","@nestjs/config":"^4.0.0","tslib":"^2.8.1"},"peerDependenciesMeta":{"@nestjs/config":{"optional":true}},"devDependencies":{"@types/jest":"^29.0.0","jest":"^29.0.0","ts-jest":"^29.0.0","typescript":"^5.0.0"},"keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"engines":{"node":">=14.0.0"},"_id":"@api-guard/trafix@1.0.5","gitHead":"74715222fa32b47641eae4043a296bc5a5b0f5da","_nodeVersion":"20.13.1","_npmVersion":"10.5.2","dist":{"integrity":"sha512-C2BltQzu8raFA2ZDxui8yeMCc4hLn2sqpKYBtUoKy7dGwLmVa+Uk8LDZSoHgAqc2heM+h1ti7pdsoNZ2gHSe/w==","shasum":"6852cfd8e889794d9e74a6014cb748d5002667cf","tarball":"https://registry.npmjs.org/@api-guard/trafix/-/trafix-1.0.5.tgz","fileCount":17,"unpackedSize":15131,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHbfHeH9LLSm22i9BiZ14DQCb9cyvCSDZ9xYhuF1GNloAiAh2hRpSDw6a5NQShI5FPmifeLAqYN+YjPpIPs/A8KWxg=="}]},"_npmUser":{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"},"directories":{},"maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/trafix_1.0.5_1745256698686_0.04255880778809673"},"_hasShrinkwrap":false}},"time":{"created":"2025-04-19T07:58:47.334Z","modified":"2025-04-21T17:31:39.122Z","1.0.0":"2025-04-19T07:58:47.583Z","1.0.1":"2025-04-19T08:06:46.203Z","1.0.2":"2025-04-19T08:09:43.439Z","1.0.3":"2025-04-19T09:47:22.945Z","1.0.4":"2025-04-19T09:51:44.631Z","1.0.5":"2025-04-21T17:31:38.876Z"},"bugs":{"url":"https://github.com/ninjasujan/throttle-guard/issues"},"author":{"name":"Sujan"},"license":"MIT","homepage":"https://github.com/ninjasujan/throttle-guard/tree/main/libs/trafix#readme","keywords":["nestjs","rate-limit","redis","sliding-window","throttle","trafix","nestjs-guard"],"repository":{"type":"git","url":"git+https://github.com/ninjasujan/throttle-guard.git","directory":"libs/trafix"},"description":"A NestJS guard for API rate limiting using Redis and sliding window algorithm","maintainers":[{"name":"sujanwebdev","email":"sujanb.poojary@gmail.com"}],"readme":"# API Rate Limiter\n\n## Project Description\n\nAPI Rate Limiter is a powerful guard for NestJS that restricts the number of requests a client can make within a specific time window. It utilizes Redis as an in-memory store for efficient and scalable request tracking.\n\n## Tech Stack\n\n- **NestJS**: Backend framework for building efficient, reliable and scalable server-side applications\n- **Redis**: High-performance in-memory data store for tracking request counts\n\n## Installation\n\n```sh\nnpm install @api-guard/trafix\n```\n\n## Usage\n\n### Configuration\n\nConfigure the TrafixModule in your `app.module.ts`:\n\n```typescript\nimport { Module } from '@nestjs/common';\nimport { TrafixModule } from '@api-guard/trafix';\nimport { ConfigModule, ConfigService } from '@nestjs/config';\n\n@Module({\n  imports: [\n    ConfigModule.forRoot(),\n    TrafixModule.forRootAsync({\n      redis: {\n        imports: [ConfigModule],\n        inject: [ConfigService],\n        useFactory: (configService: ConfigService) => ({\n          type: 'single',\n          url: configService.get<string>('REDIS_URL'),\n          options: {\n            password: configService.get<string>('REDIS_PASSWORD'),\n          },\n        }),\n      },\n      config: {\n        maxRequests: 10,\n        windowMs: 60000, // 60 seconds\n        message: 'Too many requests, please try again later.',\n        statusCode: 429,\n        ipHeader: 'x-real-ip', // Header to extract IP address\n        responseHeaders: ['X-RateLimit-Limit', 'X-RateLimit-Remaining'],\n      },\n    }),\n  ],\n})\nexport class AppModule {}\n```\n\n### Configuration Options\n\n- `redis`: Redis connection configuration\n  - `url`: Redis server URL\n  - `options.password`: Redis server password (if required)\n- `config`: Rate limiting configuration\n  - `maxRequests`: Maximum number of requests allowed in the time window\n  - `windowMs`: Time window in milliseconds\n  - `message`: Custom error message for rate limit exceeded (optional)\n  - `statusCode`: HTTP status code for rate limit exceeded (optional)\n  - `ipHeader`: Custom header to extract client IP address (optional)\n  - `responseHeaders`: Custom headers to include in the response (optional)\n\n### Applying the Guard\n\nUse the `TrafixGuard` in your controllers:\n\n```typescript\nimport { Controller, Get, UseGuards } from '@nestjs/common';\nimport { TrafixGuard } from '@api-guard/trafix';\n\n@Controller('app')\nexport class AppController {\n  @UseGuards(TrafixGuard)\n  @Get('')\n  getData() {\n    // Your controller logic here\n  }\n}\n```\n\n## Features\n\n- Implements rate limiting using Redis for efficient and scalable request tracking\n- Supports the Sliding Window algorithm for accurate rate limiting\n- Customizable configuration options for flexible integration\n- Extensible architecture for future algorithm implementations\n\n## Contributing\n\nWe welcome contributions to improve API Rate Limiter! To contribute:\n\n1. Fork the repository\n2. Create a new branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nPlease ensure your code follows NestJS best practices and includes relevant tests.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/ninjasujan/throttle-guard/blob/main/libs/trafix/LICENCE) file for details.\n\n---\n\nFor more information and detailed documentation, please refer to our [official documentation](https://github.com/ninjasujan/throttle-guard/tree/main/libs/trafix).\n","readmeFilename":"README.md"}