express-limiter-pro
Version:
A TypeScript library for Express rate limiting with enhanced configuration and type safety.
123 lines (95 loc) • 2.98 kB
Markdown
# Express Limiter Pro
A TypeScript library for Express rate limiting with environment-based configuration.
## Installation
```bash
npm install express-limiter-pro
```
## Quick Start
```typescript
import express from 'express';
import { setupRateLimitFromEndpoints } from 'express-limiter-pro';
const app = express();
// Define routes and their rate limit types
const routeMapping = {
'/api/auth/login': 'auth',
'/api/users': 'api',
'/api/admin/sensitive': 'sensitive'
};
// Environment configuration
const environment = {
isDevelopment: process.env.NODE_ENV === 'development',
isProduction: process.env.NODE_ENV === 'production'
};
// Apply rate limiting
setupRateLimitFromEndpoints(app, environment, routeMapping);
app.listen(3000);
```
## Route Types
| Type | Development | Production | Use Case |
|------|-------------|------------|----------|
| `api` | 10 req/min | 1000 req/15min | General API endpoints |
| `auth` | 3 req/min | 50 req/15min | Login, signup, authentication |
| `sensitive` | 2 req/30s | 10 req/15min | Admin operations, sensitive data |
## Configuration
### Environment Interface
```typescript
interface Environment {
readonly isDevelopment: boolean;
readonly isProduction: boolean;
}
```
### Route Mapping
```typescript
type RouteMap = Record<string, 'sensitive' | 'api' | 'auth'>;
```
## Examples
### Basic Setup
```typescript
import express from 'express';
import { setupRateLimitFromEndpoints } from 'express-limiter-pro';
const app = express();
setupRateLimitFromEndpoints(app, {
isDevelopment: false,
isProduction: true
}, {
'/api/login': 'auth',
'/api/users': 'api',
'/admin/*': 'sensitive'
});
```
### Route Patterns
```typescript
const routes = {
'/api/auth/*': 'auth', // All auth routes
'/api/users/:id': 'api', // User routes with params
'/admin/*': 'sensitive', // All admin routes
'/health': 'api' // Health check
};
```
### Multiple Apps
```typescript
// API Server
const apiApp = express();
setupRateLimitFromEndpoints(apiApp, environment, {
'/api/*': 'api',
'/auth/*': 'auth'
});
// Admin Panel
const adminApp = express();
setupRateLimitFromEndpoints(adminApp, environment, {
'/admin/*': 'sensitive'
});
```
## API Reference
### `setupRateLimitFromEndpoints(app, environment, routeMapping)`
Main function to setup rate limiting on an Express app.
- `app` - Express application instance
- `environment` - Environment configuration object
- `routeMapping` - Object mapping routes to rate limit types
### `clearCache()`
Clears the internal middleware cache (useful for testing).
```typescript
import { clearCache } from 'express-limiter-pro';
clearCache();
```
That's it! The library handles all the complexity internally and provides sensible defaults for different environments.