UNPKG

@ratelock/redis

Version:

Redis storage backend for RateLock rate limiting system

1 lines 2.85 kB
const e=require(`./token-bucket-0CgXDnay.cjs`),t=require(`./storage.service-DIaNwLh2.cjs`),n=e.__toESM(require(`redis`)),r=e.__toESM(require(`@ratelock/core/factory`));var i=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 a(e){let r=typeof e.redisOptions==`string`?(0,n.createClient)({url:e.redisOptions}):(0,n.createClient)(e.redisOptions);r.on(`error`,e=>console.error(`Redis Client Error`,e));try{await r.connect()}catch(e){throw new i(`Failed to connect to Redis`,{cause:e})}return new t.StorageService(r)}var o=class extends r.BaseLimiterFactory{constructor(t){super(e.createFixedWindowStrategy,t)}};function s(e){let t=new o(e);return e=>t.create(e)}const c=s(a);var l=class extends r.BaseLimiterFactory{constructor(t){super(e.createIndividualFixedWindowStrategy,t)}};function u(e){let t=new l(e);return e=>t.create(e)}const d=u(a);var f=class extends r.BaseLimiterFactory{constructor(t){super(e.createSlidingWindowStrategy,t)}};function p(e){let t=new f(e);return e=>t.create(e)}const m=p(a);var h=class extends r.BaseLimiterFactory{constructor(t){super(e.createTokenBucketStrategy,t)}};function g(e){let t=new h(e);return e=>t.create(e)}const _=g(a);Object.defineProperty(exports,`FixedWindowLimiterFactory`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`IndividualFixedWindowLimiterFactory`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`SlidingWindowLimiterFactory`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`TokenBucketLimiterFactory`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`createFixedWindowLimiter`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`createFixedWindowLimiterFactory`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`createIndividualFixedWindowLimiter`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`createIndividualFixedWindowLimiterFactory`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`createRedisStorage`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`createSlidingWindowLimiter`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`createSlidingWindowLimiterFactory`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`createTokenBucketLimiter`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`createTokenBucketLimiterFactory`,{enumerable:!0,get:function(){return g}});