Security News
UK Officials Consider Banning Ransomware Payments from Public Entities
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
@digicatapult/apollo-type-validation-plugin
Advanced tools
Type validation plugin for Apollo GraphQL server
A library for performing directive based validations against input values passed in a GraphQL query.
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.
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.
FAQs
Type validation plugin for Apollo GraphQL server
We found that @digicatapult/apollo-type-validation-plugin demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?
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.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.