Registry / security / graphql-rate-limit-redis-esm

graphql-rate-limit-redis-esm

JSON →
library3.0.1jsnpmunverified

Production-ready GraphQL rate limiting directive for Redis with ESM support. v3.0.1 (stable) requires Node >=22.13.0, graphql ^16|^17, @graphql-tools/utils ^10|^11, and rate-limiter-flexible ^8|^9|^10|^11. Provides a @rateLimit(limit, duration) SDL directive, schema transformer, key generators (default, user, IP, composite), fail-open/closed modes, and built-in GraphQL error helpers. Ships TypeScript types and is ESM-only. Differentiators: Redis-backed, fully typed, and flexible limiter configuration via rate-limiter-flexible.

npm install graphql-rate-limit-redis-esm
INSTALL
IMPORT
SIG · GRAPHQL-RATE-LIMIT
G
graphql-rate-limit-redis-esm
securityjavascriptv3.0.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

createRateLimitDirective
import { createRateLimitDirective } from 'graphql-rate-limit-redis-esm'
const { createRateLimitDirective } = require('graphql-rate-limit-redis-esm')
Package is ESM-only; CommonJS require() not supported.
rateLimitDirectiveTypeDefs
import { rateLimitDirectiveTypeDefs } from 'graphql-rate-limit-redis-esm'
SDL string for the @rateLimit directive; must be included in your typeDefs.
KeyGenerator
import type { KeyGenerator } from 'graphql-rate-limit-redis-esm'
import { KeyGenerator } from 'graphql-rate-limit-redis-esm'
KeyGenerator is a TypeScript type, not a runtime value. Use 'import type' to avoid bundler issues.

Creates an executable GraphQL schema with a @rateLimit directive backed by Redis and transforms it.

import { makeExecutableSchema } from '@graphql-tools/schema'; import Redis from 'ioredis'; import { RateLimiterRedis } from 'rate-limiter-flexible'; import { createRateLimitDirective, rateLimitDirectiveTypeDefs } from 'graphql-rate-limit-redis-esm'; const redis = new Redis(process.env.REDIS_URL ?? 'redis://localhost:6379'); const transformRateLimit = createRateLimitDirective({ limiterClass: RateLimiterRedis, limiterOptions: { storeClient: redis }, }); const schema = makeExecutableSchema({ typeDefs: ` ${rateLimitDirectiveTypeDefs} type Query { hello: String @rateLimit(limit: 5, duration: 60) } `, resolvers: { Query: { hello: () => 'world' } }, }); const transformedSchema = transformRateLimit(schema); console.log('Schema ready');
Debug
Known issues
breakingESM-only; require() will throw ERR_REQUIRE_ESM.
fix
Use import syntax or a dynamic import() for CommonJS projects.
affects: >=3.0.0
breakingNode.js >=22.13.0 required; lower versions will fail.
fix
Upgrade Node.js to 22.13.0 or later.
affects: >=3.0.0
gotchaMissing peer dependencies cause cryptic runtime errors like 'Cannot find module @graphql-tools/utils'.
fix
Install all peer deps: npm install graphql @graphql-tools/utils rate-limiter-flexible
affects: >=3.0.0
gotchaWhen using RateLimiterRedis, Redis connection failures may throw if failClosed is true (default).
fix
Set failOpen: true in createRateLimitDirective config to allow requests during Redis outage.
affects: >=3.0.0
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module not supported
Using CommonJS require() on this ESM-only package.
fix
Change to import syntax or use dynamic import('graphql-rate-limit-redis-esm').
Cannot find module '@graphql-tools/utils'
Missing peer dependency @graphql-tools/utils.
fix
Run: npm install @graphql-tools/utils
TypeError: rateLimiter.consume is not a function
Misconfigured limiterClass; likely using a limiter that doesn't implement consume().
fix
Use a valid rate-limiter-flexible limiter like RateLimiterRedis, RateLimiterMemory, etc.
Upgrade
Version history
3.0.1latest on npm
Audit
Dependencies
graphqlrequiredPeer – provides GraphQL runtime (v16 or v17)
@graphql-tools/utilsrequiredPeer – required for schema transformation (v10 or v11)
rate-limiter-flexiblerequiredPeer – provides rate limiter backends (v8-v11)
ioredisoptionalOptional – needed when using RateLimiterRedis limiter class
Agent activity
21 hits · last 30 days
node
20
Resources
graphql-rate-limit-redis-esm — npm install graphql-rate-limit-redis-esm · libregistry