Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@digicatapult/apollo-type-validation-plugin

Package Overview
Dependencies
Maintainers
5
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@digicatapult/apollo-type-validation-plugin

Type validation plugin for Apollo GraphQL server

  • 1.1.43
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
5
Created
Source

Apollo type validation plugin

A library for performing directive based validations against input values passed in a GraphQL query.

Usage

The library can be used to instantiate an Apollo server plugin which can be configured to perform the required validation checks. For example:

import { ApolloServer } from '@apollo/server'
import validationPlugin from '@digicatapult/apollo-type-validation-plugin'

const {
  plugin: typeValidationPlugin,
  directives: { arrayLengthDirective },
} = validationPlugin

const typeDefs = ...
const resolvers = ...

const server = new ApolloServer({
    schema,
    // build a plugin to get the complexity of a query before running the resolvers
    // allows us to set a max complexity per query, or meter rate-limiting by complexity
    plugins: [typeValidationPlugin({ schema, directives: [arrayLengthDirective()] })],
    allowBatchedHttpRequests: true
})

A worked example using the arrayLengthDirective can be found here.

Supported Directives

The following directives are currently supported:

maxArrayLength

A directive used to limit the maximum size of an input array that can be passed as part of an argument. For example:

# directive definition used by arrayLengthDirective
directive @maxArrayLength(length: Int!) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION

type Query {
  echo(values: [Int!]! @maxArrayLength(length: 5)): [Echo!]!
}

type Echo {
  value: Int!
  times(number: [Int!]! @maxArrayLength(length: 2)): [Int!]!
}

In this schema the maximum number of elements that can be validly passed as values to the field echo is 5 whilst the maximum number that can be passed to number on the field times is 2.

boundedInteger

A directive used to bound the value of an integer that can be passed as an argument. For example:

# directive definition used by boundedIntegerDirective
directive @boundedInteger(min: Int!, max: Int!) on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION

type Query {
  echo(input: Int! @boundedInteger(min: 5, max: 10)): Echo!
}

type Echo {
  value: Int!
}

In this schema the value that can be validly passed as input to the field echo must be greater than or equal to 5 and less than or equal to 10.

Keywords

FAQs

Package last updated on 09 Mar 2024

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

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc