Registry /
security / graphql-rate-limit-redis-esm
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');
Errors
Common errors & fixes
Error [ERR_REQUIRE_ESM]: require() of ES Module not supported
Using CommonJS require() on this ESM-only package.
fixChange to import syntax or use dynamic import('graphql-rate-limit-redis-esm'). Cannot find module '@graphql-tools/utils'
Missing peer dependency @graphql-tools/utils.
fixRun: npm install @graphql-tools/utils
TypeError: rateLimiter.consume is not a function
Misconfigured limiterClass; likely using a limiter that doesn't implement consume().
fixUse a valid rate-limiter-flexible limiter like RateLimiterRedis, RateLimiterMemory, etc.
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