How rupayan-san/request-guard works
Request Guard is a Node.js library for Redis-backed rate limiting and semantic caching. The primary workflows are selecting a limiter strategy and checking each user request, or embedding a query, searching cached vectors, and returning a hit or generating and storing an LLM response on a miss. Source confirms the rate-limit algorithms’ Redis calls and the semantic cache’s provider and Redis calls; the README documents the capabilities and provider contracts. The semantic cache method name in the sampled source differs from the README’s API name.
Main entry points: semantic_cache.service.ts Semantic Cache Service · rateLimiter.factory.ts Limiter Factory · tokenBucket.algo.ts Token Bucket · leakyBucket.algo.ts Leaky Bucket
Components 16
Rate Limiting
- Limiter Factory
src/rate_limiter/rateLimiter.factory.ts - Limiter Contract
src/rate_limiter/rateLimiter.interface.ts - Token Bucket
src/rate_limiter/algorithms/tokenBucket.algo.ts - Leaky Bucket
src/rate_limiter/algorithms/leakyBucket.algo.ts - Sliding Window
src/rate_limiter/algorithms/slidingWindow.algo.ts
Semantic Cache
- Semantic Cache Service
src/semantic_cache/services/semantic_cache.service.ts - Vector Encoding
src/semantic_cache/utils/vector.utils.ts - Similarity Utility
src/semantic_cache/utils/similarity.utils.ts - Cache Threshold
src/semantic_cache/config/semantic_cache.config.ts
Provider Contracts
- Embedding Contract
src/interfaces/embedding.interface.ts - LLM Contract
src/interfaces/llm.interface.ts
Library API
- Package Exports
src/index.ts
Other components
- Node.js Application
- Embedding Provider
- LLM Provider
- Redis
Connections 19
- Node.js Application → Package Exports: imports
- Node.js Application → Limiter Factory: creates limiter
- Limiter Factory → Token Bucket: instantiates
- Limiter Factory → Leaky Bucket: instantiates
- Limiter Factory → Sliding Window: instantiates
- Token Bucket → Redis: evaluates script
- Leaky Bucket → Redis: evaluates script
- Sliding Window → Redis: evaluates script
- Node.js Application → Semantic Cache Service: uses cache
- Semantic Cache Service → Embedding Provider: generates embedding
- Semantic Cache Service → LLM Provider: generates response
- Semantic Cache Service → Redis: searches and stores
- Semantic Cache Service → Vector Encoding: encodes vectors
- Semantic Cache Service → Cache Threshold: uses default
- Semantic Cache Service → Embedding Contract: uses contract
- Semantic Cache Service → LLM Contract: uses contract
- Token Bucket → Limiter Contract: implements
- Leaky Bucket → Limiter Contract: implements
- Sliding Window → Limiter Contract: implements