Fix/rate limit validation#417
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Key Features Added
Configuration Bounds Constants
Exported RATE_LIMIT_BOUNDS with min/max values for all parameters
Single source of truth for validation ranges
Enhanced Validation
Type checking (number, finite, integer)
Range validation with clear boundaries
Improved error messages with specific guidance
Validation at startup, construction, and runtime updates
New Functions
parseRateLimitEnv() - Validates environment variables at startup
isValidRateLimitConfig() - Quick validation check
formatValidationError() - Structured error formatting
Startup Validation
Server validates configuration on startup
Fails fast with clear error messages
Logs successful initialization
Constructor & Runtime Validation
Both RateLimiter and AddressRateLimiter validate on construction
updateConfig() methods validate before applying changes
Validation Rules
maxRequests: Integer between 1 and 10,000
windowMs: Integer between 1,000ms (1 second) and 3,600,000ms (1 hour)
Must be numbers (not strings, objects, etc.)
Must be finite (not Infinity or -Infinity)
Must not be NaN
Testing
585 total tests - all passing
Added 34 new validation tests covering:
Type validation
Range validation
Constructor validation
Runtime update validation
Startup validation
Edge cases (negative values, Infinity, NaN, etc.)
Closes #402