UNPKG

@ratelock/redis

Version:

Redis storage backend for RateLock rate limiting system

1 lines 1.89 kB
import{StorageService as e}from"./storage.service-UGR_JAFF.mjs";import{createFixedWindowStrategy as t,createIndividualFixedWindowStrategy as n,createSlidingWindowStrategy as r,createTokenBucketStrategy as i}from"./token-bucket-wE8WZdLe.mjs";import{createClient as a}from"redis";import{BaseLimiterFactory as o}from"@ratelock/core/factory";var s=class e extends Error{code;details;constructor(t,n){super(t),this.name=`RedisStorageError`,this.code=n?.code,this.cause=n?.cause,this.details=n?.details,Error.captureStackTrace&&Error.captureStackTrace(this,e)}static isRedisStorageError(t){return t instanceof e}static fromError(t,n){if(t instanceof e)return t;let r=n?`${n}: ${String(t)}`:String(t);return new e(r,{cause:t})}};async function c(t){let n=typeof t.redisOptions==`string`?a({url:t.redisOptions}):a(t.redisOptions);n.on(`error`,e=>console.error(`Redis Client Error`,e));try{await n.connect()}catch(e){throw new s(`Failed to connect to Redis`,{cause:e})}return new e(n)}var l=class extends o{constructor(e){super(t,e)}};function u(e){let t=new l(e);return e=>t.create(e)}const d=u(c);var f=class extends o{constructor(e){super(n,e)}};function p(e){let t=new f(e);return e=>t.create(e)}const m=p(c);var h=class extends o{constructor(e){super(r,e)}};function g(e){let t=new h(e);return e=>t.create(e)}const _=g(c);var v=class extends o{constructor(e){super(i,e)}};function y(e){let t=new v(e);return e=>t.create(e)}const b=y(c);export{l as FixedWindowLimiterFactory,f as IndividualFixedWindowLimiterFactory,h as SlidingWindowLimiterFactory,v as TokenBucketLimiterFactory,d as createFixedWindowLimiter,u as createFixedWindowLimiterFactory,m as createIndividualFixedWindowLimiter,p as createIndividualFixedWindowLimiterFactory,c as createRedisStorage,_ as createSlidingWindowLimiter,g as createSlidingWindowLimiterFactory,b as createTokenBucketLimiter,y as createTokenBucketLimiterFactory};