INNER CODE UNIT · TypeScript
rateLimit
ravangen/graphql-rate-limit · src/index.ts:283
const rateLimit = (directive: Record<string, unknown>, field: GraphQLFieldUnion): void => {
const directiveArgs = directive as RateLimitArgs;
const limiter = getLimiter(directiveArgs);
const { extensions: fieldExtensions, resolve = defaultFieldResolver } = field;
const directiveExtensions = fieldExtensions
? <Maybe<RateLimitExtensions<TContext>>>fieldExtensions[name]
: undefined;
const {
keyGenerator: fieldKeyGenerator = keyGenerator,
pointsCalculator: fieldPointsCalculator = pointsCalculator,
onLimit: fieldOnLimit = onLimit,
setState: fieldSetState = setState,
} = directiveExtensions ?? {};
field.resolve = async (source, args, context: TContext, info) => {
const pointsToConsume = await fieldPointsCalculator(
directiveArgs,
source,
args,