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,

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…