UNPKG

svelte-guardian

Version:

Batteries included authentication for SvelteKit applications.

38 lines (37 loc) 1.18 kB
import { RedisRateLimiter } from './redis'; import { UpstashRedisRateLimiter } from './upstash-redis'; import { InMemoryRateLimiter } from './in-memory'; import type { RequestEvent } from '@sveltejs/kit'; export type RateLimitStrategy = 'redis' | 'upstash' | 'memory'; export interface RedisConfig { url?: string; socket?: { host?: string; port?: number; }; username?: string; password?: string; database?: number; tls?: boolean; connectionOptions?: { connectTimeout?: number; disconnectTimeout?: number; pingInterval?: number; maxRetriesPerRequest?: number; retryStrategy?: (times: number) => number | null; }; } export interface RateLimitingConfig { enabled?: boolean; requestsPerMinute?: number; blockDuration?: number; strategy?: RateLimitStrategy; windowMs: number; maxRequests: number; redisConfig?: RedisConfig; keyGenerator?: (event: RequestEvent) => string; } export declare class RateLimiterFactory { private static instance; static create(config: RateLimitingConfig): RedisRateLimiter | UpstashRedisRateLimiter | InMemoryRateLimiter; }