ratelimit.ts (701B)
1 import { RATE_LIMIT, RATE_LIMIT_TTL } from "#core/domain/constants.ts"; 2 import { Limiter } from "#core/domain/limiter.ts"; 3 import { RateLimit } from "#core/domain/rate_limit.ts"; 4 5 export type RateLimitDto = { 6 key: string; 7 count: number; 8 expire: Date; 9 version: number; 10 }; 11 12 export function mapFromRateLimit(rateLimit: RateLimit): RateLimitDto { 13 return { 14 key: rateLimit.key, 15 count: rateLimit.limiter.count, 16 expire: new Date(rateLimit.limiter.expire), 17 version: rateLimit.version, 18 }; 19 } 20 21 export function mapToRateLimit(dto: RateLimitDto) { 22 return new RateLimit( 23 dto.key, 24 new Limiter(RATE_LIMIT, RATE_LIMIT_TTL, dto.count, dto.expire.getTime()), 25 dto.version, 26 ); 27 }