You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 7-8.RSVP
Socket
Socket
Sign inDemoInstall

@envelop/rate-limiter

Package Overview
Dependencies
Maintainers
1
Versions
1275
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@envelop/rate-limiter

This plugins uses [`graphql-rate-limit`](https://github.com/teamplanes/graphql-rate-limit#readme) in order to limit the rate of calling queries and mutations.


Version published
Weekly downloads
1.5K
decreased by-26.58%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

@envelop/rate-limiter

This plugins uses graphql-rate-limit in order to limit the rate of calling queries and mutations.

Getting Started

yarn add @envelop/rate-limiter

Usage Example

import { execute, parse, specifiedRules, subscribe, validate } from 'graphql'
import { envelop, useEngine } from '@envelop/core'
import { IdentifyFn, useRateLimiter } from '@envelop/rate-limiter'

const identifyFn: IdentifyFn = context => {
  return context.request.ip
}

const getEnveloped = envelop({
  plugins: [
    useEngine({ parse, validate, specifiedRules, execute, subscribe }),
    // ... other plugins ...
    useRateLimiter({
      identifyFn
    })
  ]
})

By default, we assume that you have the GraphQL directive definition as part of your GraphQL schema (directive @rateLimit(max: Int, window: String, message: String) on FIELD_DEFINITION).

Then, in your GraphQL schema SDL, you can add @rateLimit directive to your fields, and the limiter will get called only while resolving that specific field:

type Query {
  posts: [Post]! @rateLimit(
    window: "5s", // time interval window for request limit quota
    max: 10,  // maximum requests allowed in time window
    message: "Too many calls!"  // quota reached error message
  )
  # unlimitedField: String
}

You can apply that directive to any GraphQL field definition, not only to root fields.

Error message interpolation

The message argument of the @rateLimit directive can be dynamic. You {{var}} or {{ var }} syntax to interpolate variables.

type Query {
  posts: [Post]! @rateLimit(window: "5s", max: 10, message: "Too many calls made by {{ id }}")
}

The only available variable so far is id.

Notes

You can find more details here: https://github.com/teamplanes/graphql-rate-limit#readme

FAQs

Package last updated on 17 Oct 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc