UNPKG

express-limiter-pro

Version:

A TypeScript library for Express rate limiting with enhanced configuration and type safety.

123 lines (95 loc) 2.98 kB
# 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.